世界快看点丨java面试强基(6)

来源: 腾讯云 时间:2022-11-25 20:03:37

面向对象三大特征了解吗?

封装

​封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。如果属性不想被外界访问,我们大可不必提供方法给外界访问。

继承


(资料图片)

​不同类型的对象,相互之间经常有一定数量的共同点。同时,每一个对象还定义了额外的特性使得他们与众不同。

​继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。

​通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 ,提高我们的开发效率。

关于继承如下 3 点请记住:

- 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。- 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。- 子类可以用自己的方式实现父类的方法。

多态

多态,顾名思义,表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例。

多态的特点:

对象类型和引用类型之间具有继承(类)/实现(接口)的关系;引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;多态不能调用“只在子类存在但在父类不存在”的方法;如果子类重写了父类的方法,真正执行的是子类覆盖的方法,如果子类没有覆盖父类的方法,执行的是父类的方法。

1). 静态方法和属性是属于类的,调用的时候直接通过类名.方法名完成对,不需要继承机制及可以调用。如果子类里面定义了静态方法和属性,那么这时候父类的静态方法或属性称之为”隐藏”。如果你想要调用父类的静态方法和属性,直接通过父类名.方法或变量名完成,至于是否继承一说,子类是有继承静态方法和属性,但是跟实例方法和属性不太一样,存在”隐藏”的这种情况。2). 多态之所以能够实现依赖于继承、接口和重写、重载(继承和重写最为关键)。有了继承和重写就可以实现父类的引用指向不同子类的对象。重写的功能是:”重写”后子类的优先级要高于父类的优先级,但是“隐藏”是没有这个优先级之分的。3). 静态属性、静态方法和非静态的属性都可以被继承和隐藏而不能被重写,因此不能实现多态,不能实现父类的引用可以指向不同子类的对象。非静态方法可以被继承和重写,因此可以实现多态。结论:java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)而是被隐藏.

深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

关于深拷贝和浅拷贝区别,我这里先给结论:

浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。

== 和 equals() 的区别?

==对于基本类型和引用类型的作用效果是不同的:

对于基本数据类型来说,==比较的是值。对于引用数据类型来说,==比较的是对象的内存地址。

因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。

equals()不能用于判断基本数据类型的变量,只能用来判断两个对象是否相等。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类,因此所有的类都有equals()方法。

Objectequals()方法:

public boolean equals(Object obj) {     return (this == obj);}

equals()方法存在两种使用情况:

类没有重写equals()方法:通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象,使用的默认是Objectequals()方法。类重写了equals()方法:一般我们都重写equals()方法来比较两个对象中的属性是否相等;若它们的属性相等,则返回 true(即,认为这两个对象相等)。

举个例子(这里只是为了举例。实际上,你按照下面这种写法的话,像 IDEA 这种比较智能的 IDE 都会提示你将==换成equals()):

String a = new String("ab"); // a 为一个引用String b = new String("ab"); // b为另一个引用,对象的内容一样String aa = "ab"; // 放在常量池中String bb = "ab"; // 从常量池中查找System.out.println(aa == bb);// trueSystem.out.println(a == b);// falseSystem.out.println(a.equals(b));// trueSystem.out.println(42 == 42.0);// true

String中的equals方法是被重写过的,因为Objectequals方法是比较的对象的内存地址,而Stringequals方法比较的是对象的值。当创建String类型的对象时,虚拟机会在常量池中查找有没有已经存在的值和要创建的值相同的对象,如果有就把它赋给当前引用。如果没有就在常量池中重新创建一个String对象。

上一篇:

下一篇:

X 关闭

热门推荐

【独家】“静”下来!为了早日“动”起来!

2022-11-25   北京第二外国语学院

掌握二手车估价方法,再也不怕花冤枉钱了

2022-11-25   中国产业经济信息网

不用囤菜,管够!

2022-11-25   京彩台湾

wxPython绘图API4每日播报

2022-11-25   腾讯云

瓦文旗帜报

2022-11-25   万能网

经典辣妹胜利

2022-11-25   万能网

线上线下开展消防安全检查1环球时讯

2022-11-25   北京青年报官网

宝色股份:构建发展新格局 彰显国企新担当

2022-11-25   中国产业经济信息网

历经21年三代更新 全新欧蓝德正式下线

2022-11-25   中国产业经济信息网

深圳1996-李百军作品4天天速讯

2022-11-25   凡是摄影

tinymce 如何实现动态国际化

2022-11-25   腾讯云

团团农生活(团靓网)

2022-11-25   万能网

共商共建共治共享让车辆“归位”

2022-11-25   北京青年报官网

GlusterFS简介

2022-11-24   腾讯云

北京如何成立一家研发中心

2022-11-24   李娜工商企业管理

中欣卡回收

2022-11-24   陶鑫爱生活

k755次列车时刻表(k755)

2022-11-24   万能网

实用 NFT:数字资产的未来

2022-11-24   腾讯云

利好!2023辽宁省考大幅扩招?

2022-11-24   辽宁中公教育

全球通讯!NFT的功能价值

2022-11-24   腾讯云

北京十大刑事律师事务所咨询

2022-11-24   近日安好

北京市海淀医院近期就医须知3快消息

2022-11-24   北京市海淀医院

北京中欣卡回收教程

2022-11-24   淘文者

北京永辉超市生鲜量足价稳1全球速递

2022-11-24   北京青年报官网

北京知名的拆迁律师事务所推荐

2022-11-24   小雨一路行

定光佛(定光)

2022-11-24   万能网

谈恋爱炸了

2022-11-24   万能网

手抖的影响32环球滚动

2022-11-24   雪山上的紫鸢花

环球焦点!瓦轴精密角接触球轴承生产线投产

2022-11-24   中国产业经济信息网

海淀万寿路“四民”工作法守护百姓心

2022-11-24   北京青年报官网

世界微头条丨货足价稳保供给

2022-11-24   北京青年报官网

五边形有几条对角线4资讯

2022-11-23   万能网

城中“缦”生活4时讯

2022-11-23   品牌家居

Copyright   2015-2022 中国行业信息网版权所有  备案号:   联系邮箱:29 59 11 57 8@qq.com