面向对象 面试题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=""+