【Java核心面试宝典】Day9、面向对象常见面试题汇总(四)
Hello,你好呀,我是
灰小猿
!一个超会写bug的程序猿!
用坚持缔造技术、用指尖敲动未来!
和很多小伙伴们一样,我也是一名奔波在Java道路上的“创造者
”。也想靠技术来改未来,改变世界!因为我们坚信每一次敲动键盘都能让生活变得更智能、世界变得更有趣
!
在此专栏《Java核心面试宝典》记录我们备战梦想的【day 9】
!
今天继续和大家分享在面向对象中类与接口方面的常见面试题。不要小看任何一个基础技术点,往往最基础的才是最会考察的内容。
1、抽象类和接口是否可以被实例化?
抽象类和接口都不能通过new
操作符来创建实例,只能通过具体类创建实例。
2、包含抽象方法的类是否必须被声明为抽象类,抽象类是否必须包含抽象方法?
包含抽象方法的类必须被声明为抽象类,具体类不能包含抽象方法。而抽象类中可以不包含抽象方法,即使一个类中的所有方法都是具体方法,也可以将这个类声明为抽象类。
3、从继承角度而言,抽象类和接口的区别是什么?
类的继承只能是单重继承
,即一个类只能继承一个父类;但是对接口的继承是允许多重继承的, 即一个类可以继承多个接口,一个接口同样也可以继承多个接口,这样的接口称为子接口。
4、从变量、构造方法、方法的角度,阐述抽象类和接口的区别?
抽象类和接口有以下区别:
抽象类的变量没有限制,接口只包含常量,即接口的所有变量必须是public static final
抽象类包含构造方法,子类通过构造方法链调用构造方法,接口没有构造方法。
抽象类的方法没有限制,接口的方法必须是public abstract
的实例方法,
==同时需要注意==:在新版的JDK中关于接口的规则有了一定的变化,
从Java8开始,接口方法可以由默认实现,
从Java9开始,接口内允许定义私有方法。
5、哪两个接口可以实现对象之间的排序和比较大小?
Comparable
接口是排序接口。如果一个类实现了 Comparable 接口,则该类的对象可以排序。Comparable 接口包含一个抽象方法 compareTo
,实现 Comparable 接口的类需要实现该方法,定义排序的依据。
Comparator
接口是比较器接口。如果一个类本身不支持排序(即没有实现 Comparable 接口),但是又需要对该类的对象排序,则可以通过实现 Comparator 接口的方式建立比较器。Comparator 接口包含两个抽象方法 compare
和 equals
,其中 compare 方法是必须在实现类中实现的,而 equals 方法在任何类中默认已经实现。
6、如何对一个数组中的多个对象按照不同的依据进行排序?
为了按照不同的依据进行排序,则需要使用不同的比较器,通过实现 Comparator
接口实现比较器,在调用Arrays.sort
方法时将数组和比较器作为参数,即可将数组按照指定的比较器进行排序。
7、除了首字母大写,包装类的名称和对象的基本数据类型是否一定相同?
不一定,int
类型对应的包装类是Integer
,char
类型对象的对应的包装类是Character
。
具体的可以看下面这个表格:
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
8、包装类的构造方法的参数可以是什么类型的?包装类的构造方法是否可以无参数?
构造方法的参数值可以是基本数据类型的值
,也可以是表示值的字符串
。包装类的构造方法都是有参构造的,没有无参数构造方法。
9、包装类的实例是否可变?
包装类的实例是不可变的,创建包装对象之后,其内部的值就不能改变。
10、什么是自动装箱和自动拆箱?
将基本数据类型值转换为包装对象,称为装箱
。将包装对象转换为基本数据类型的值称为拆箱
。
同时,从JDK1.5开始,基本数据类型和包装类之间可以进行自动转换。
今天学习的内容比较简单,主要就是抽象类和接口使用规范
、知道Java是单重继承的
、了解进行对象序列化的两个常用接口Comparable
和Comparator
、熟悉基本数据类型和包装类之间的转换
。
面向对象的面试题比较多,之后还会继续总结,如果小伙伴们有遇到其他相关的面试题,欢迎在评论区留言提出,我会把大家提出的总结到文章内`, 欢迎小伙伴们一起评论区打卡学习!小伙伴们可也在左方加我好友一起探讨学习!
我是==灰小猿==,我们下期见!
- 点赞
- 收藏
- 关注作者
评论(0)