面向对象 面试题16道(附答案)

tech2024-12-11  5

面向对象 面试题16道(附答案)

1. 接口与抽象类的区别?2. 构造方法可否能被重写?3. (= =)与equals()的区别?4. 什么是拆箱和装箱?5. 方法重载(overload)需要满足什么条件,方法覆盖/方法重写(override)需要满足什么条件?6. 谈谈final,finally,finalize的区别。7. abstract的method是否可同时是static,是否可同时是synchronized?8. 接口是否可继承接口?抽象类是否可实现(implements)接口?实现类是否可继承抽象类(concrete class)?9. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的语句会不会执行,什么时候被执行,在return前还是后?10. 面向对象的特征有哪些方面?11. int和Integer有什么区别?12. 静态变量和实例变量的区别?13. 什么叫对象持久化(object persistence),为什么要进行对象持久化?14. JAVA中使用final修饰符,对程序有哪些影响?15. 访问权限修饰符 public、private、protected, 以及不写(默认)时的区别?16. 以下循环语句执行的结果是

1. 接口与抽象类的区别?

抽象类:使用sbstract修饰 接口:使用interface

抽象类:可以有抽象方法和普通方法,抽象方法的类一定是抽象类 接口:jdk1.7之前只能有抽象方法,在jdk1.8之后 可以有default、static修饰的方法

抽象类:可以有普通的属性(变量 常量等等) 接口:只能用常量

抽象类:通过普通类继承抽象类{}实现 接口:通过类implements接口{}实现

注意:他们都不能实例化,不能通过new关键字创建 但可以使用内部类实现抽象类和接口

抽象类:可以有构造方法 接口:没有构造方法

抽象类:只能单继承 接口:可以多继承 也可以多实现

2. 构造方法可否能被重写?

​ 不能:

比如class A{public name public age} class B extends A{public sex} //发生错误

​ 构造方法:

给类中的属性赋值 继承关系中子类除了继承父类的属性之外,还可以扩展自己的属性

可以重载或者在子类中用 super()调用父类的构造方法

3. (= =)与equals()的区别?

​ ==:

基本数据类型:比较数值是否相等 引用数据类型 :在电脑中的地址 String 基本数据类型的包装类

​ equals():

​ 没有重写:比较两个对象的地址是否相等

​ public boolean equals(Object obj){

​ return (this==obj);

​ }

​ 重写:

​ public boolean equals(Object obj){

​ 需要的数据类型 变量名=(需要的数据类型)obj

​ 需要的数据类型中的变量值比较是否相等

​ }

4. 什么是拆箱和装箱?

​ 装箱:基本数据类型转换成包装类:基本数据类型直接赋值给对应的包装类型

​ Integer a=43;

​ int t=34;

​ Integer t1=t;

​ Integer in=new Integer(t)

​ 拆箱:包装类转换成基本数据类型

​ Integer a=45;

​ int t=a.intvalue();

​ String----基本数据类型

​ Integer integer=new Integer(String类型数字)

​ int t = integer.intvalue()

​ 基本数据类型-String

​ int a=45;

​ String s=""+a;

​ Integer n=new Integer(a);

​ n.toString()

5. 方法重载(overload)需要满足什么条件,方法覆盖/方法重写(override)需要满足什么条件?

重载:

在当前类

方法名必须相同

返回值类型没有任何关系

方法的参数一定不相同

重写:三同一不低

子类和父类的方法名,返回值类型 参数列表全部必须相同

子类的方法修饰符权限不能比父类低

6. 谈谈final,finally,finalize的区别。

​ final 变量 方法类:属性只能改变一次,方法不能被重写 类不能被继承

finally:异常处理的语句结构的一部分,总会执行

​ finalize:Object一个类,垃圾回收期执行的时候调用方法,提供对其他资源的回收。

7. abstract的method是否可同时是static,是否可同时是synchronized?

都不可以:

​ abstract抽象类,只有方法的声明没有实现,抽象类的一个子类

​ static:静态,一种属于类而不属于对象的方法或者属性

​ synchronized:同步,相对于线程的同步锁.

8. 接口是否可继承接口?抽象类是否可实现(implements)接口?实现类是否可继承抽象类(concrete class)?

​ 可以 可以 可以。但是 实现类必须要有明确的构造方法(提供一个默认的super()调用父类中的构造方法)

9. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的语句会不会执行,什么时候被执行,在return前还是后?

会执行,在return前执行

10. 面向对象的特征有哪些方面?

​ 封装:把对象的属性和实现细节隐藏,仅对外提供公共的方法(get set)

​ 继承:多个类中存在相同的属性和行为的时候,相同的属性和行为单独拿到一个类中,多个类无需在定义属性和方法,只需要继承这个类,继承这个类子类,被继承的类父类

​ 多态允许不同类的对象对同一个消息做出响应,一种事物的多种形态:代码共享 解决应用程序函数的同名的问题

11. int和Integer有什么区别?

int:基本数据 默认0 定义属性

Integer:包装类 null new创建对象

12. 静态变量和实例变量的区别?

​ 静态变量 使用 static 修饰,可以使用类名.属性名调用, 所有对象共享变量 , 加载类的时候读取到变量

​ 实例变量:没有static修饰,可以使用 对象名.属性名 调用, 所有对象单独私有变量 ,类加载没有读取到变量

13. 什么叫对象持久化(object persistence),为什么要进行对象持久化?

​ 对象的内容保存到数据库或者文件中,可以很方便保存的对象在读取出来,供用户来使用,可以使用java提供的一个序列化的机制

​ 什么时候进行序列化?

对象保存到文件或者数据库中

套接字在网络上传送对象

通过RMI传输的对象

​ 对象序列化方法:实现Serializabale接口

14. JAVA中使用final修饰符,对程序有哪些影响?

​ final类:不能被继承。注意使用final修饰类时,要慎重选择,除非这个类真正在以后变成中不需要来继承或者处于安全的考虑,否则尽量不要把类设计为final类

final方法 不能被重写。方法锁定,以防止任何类借修改的名义来操作方法的敏感的代码

final变量:常量,一旦赋值之和不能更改。取决于属性在编程的后期是否更改值,以后都不更改可以加final

15. 访问权限修饰符 public、private、protected, 以及不写(默认)时的区别?

当前类同包子类其他包public可以可以可以可以protected可以可以可以不可以默认可以可以不可以不可以private可以不可以不可以不可以

16. 以下循环语句执行的结果是

static boolean foo(char c) { System.out.print(c); return true; } public static void main(String[] args) { int i = 0; for (foo('A'); foo('B') && (i < 2); foo('C')) { i++; foo('D'); } }

ABDCBDCB

最新回复(0)