前言
面试中对于技术职位,通常分笔试与面谈,若是面试官的一些小问题你能够立马找到对应的知识点扩展开来,那么这就是你的优点,本系列将讲述一些java面试中的事,不会很详细,可是应该比较全面吧。java
主要内容面试
多层命名空间,解决命名冲突,提升可维护性、提升开发效率等ide
出发点不一样、层次逻辑关系不一样、数据处理方式与控制程序方式不一样、分析设计与编码转换方式不一样编码
抽象(过程抽象、数据抽象)、继承、封装、多态设计
较高开发效率(继承或组合)、保证软件的鲁棒性、保证软件的高可维护性对象
子类继承仅能继承一个父类与其中非私有(public和protected)的成员变量与方法,存在同名时则进行覆盖继承
组合是显式的、继承是隐式的。组合中的总体类和继承中的子类对应,组合中的局部类和继承中的父类对应,Cat是Vehicle的一种,是继承关系(is-a)、Car中包含多个Tire,则是一种组合关系(has-a)。接口
不要轻易使用继承,当父类被修改时,会影响到全部继承自它的子类,从而增长程序的维护难度与成本。采用接口与组合的方式比采用继承的方式具备更好的可扩展性,能使用组合就尽可能不要使用继承。事务
方法的重载(overload)-编译时多态、方法的覆盖(override)-运行时多态内存
不少方面吧,覆盖是子类与父类(垂直关系)(参数列表相同),重载是同一个类(水平关系)(参数列表不一样)
前者为实体、后者是概念;接口设计理念(has-a)、抽象类设计理念(is-a);接口是一种特殊形式的抽象类,抽象类多用于同类事务中有没法具体描述的方法的场景、接口多用于不一样类之间
静态内部类、成员内部类、局部内部类、匿名内部类
Java提供了获取类名的方法:getClass().getName()
class A{}public class Test extends A { public void test(){
System.out.println(super.getClass().getName());
} public static void main(String[] args){ new Test().test();
}
}
以上输出为Test,由于Java中任何类都继承Object类,getClass()方法在Object中被定义为final与native,子类不能覆盖该方法。咱们须要使用反射机制,使用getClass().getSuperclass().getName()。
break(直接跳出当前循环,即终止内层循环,不影响外层循环)、continue(跳过循环体中的一部分语句,中断一次循环)、return(使程序控制返回到调用该方法的地方)
final(引用不可变)、finally(在须要释放资源的状况下)、finalize(Object的方法,垃圾回收器准备好释放对象占用的空间,先调用finalize()方法,而且在下一次垃圾回收动做发生时,才会真正回收对象占用的内存)
待续有帮助的话,能够期待Thr章节