问题2.7.1,开放性问题,说一下你对面向对象思想的了解。
要点1,先说基础概念,比如面向对象思想包括封装、继承、多态,然后说些语法,比如可以通过extends继承类、通过implement来实现接口。
要点2,得结合具体的实际,说一下在你做过的项目里,面向对象思想带来的具体好处,比如结合一个具体的例子(比如电信系统),说一下把方法都定义到父类里,然后通过继承子类来扩展,从而能改善代码结构,通过多态来减少代码修改后的维护量。这个切记别只说理论,说的时候一定得举些你项目里的例子。
问题2.7.2,接口和抽象类有什么差别?
这个基本都会问到,首先从语法角度分析,这时可以解释一下为什么接口和抽象方法Java编译器不让定义方法体,以及接口的属性为什么默认是public static final。
随后一定得说,抽象类是对逻辑的归纳,比如人类是中国人和美国人类的抽象类,而接口是对功能的抽象,比如把能发光的功能归纳到一个接口里。随后可以举些你项目里用到过的例子来说你定义过哪些接口和抽象类,由此通过案例来说明这两者的差别。
问题2.7.3,说下重载(overload)和覆盖(override)的差别。
这个也会经常问,重载是多态的一种体现,表现形式是方法同名但参数不同,而覆盖是子类方法覆盖掉父类方法。
随后请大家说出子类覆盖父类方法的两大局限,子类方法不能缩小父类方法的访问权限,而且,子类方法不能抛出比父类方法更多的异常。同时解释一下具体的原因。
问题2.7.4,this和super的含义。这个是语法问题,就不展开了。
问题2.7.5,finalize方法有什么作用?
第一,可以说出这个方法在类被回收时被调用;第二可以说,一般我们在项目里不会重写这个方法,因为会引发内存无法回收的问题。后面我们会详细提到 java的垃圾回收机制(GC),如果大家感觉可以,可以由这个问题展开回答一下你对GC的认识。
问题2.7.6,final关键的含义。
这时请分别说出final作用到类、方法和属性上分别有什么作用。随后最好结合你的实际项目,说下final类、final方法和final属性的应用场景。
问题2.7.7,构造函数能否被覆盖,能否被重载?
构造函数能重载,但不能覆盖,原因已经讲过。
接下来的问题只给出的题目,答案请到附录里去找。
问题2.7.8静态变量和实例变量的区别?
问题2.7.9是否可以从一个static方法内部发出对非static方法的调用?
问题2.7.10请说出作用域public,private,protected,以及不写时的区别。