备战BAT面试的学习记录,整理了最近自己查漏补缺的知识点,总结出来和大家分享,如有错误,欢迎指出!
备战BAT面试
接口
接口方法的访问权限
JDK 1.8以前,接口中的方法必须是public的
JDK 1.8时,接口中的方法可以是public的,也可以是default的
JDK 1.9时,接口中的方法可以是private的
接口函数的声明
在接口中,属性默认public static final,这三个关键字可以省略;方法默认是public abstract,接口中不允许有static类型的方法。
简单来说,如果在接口中声明的变量public int a 或 static int a效果是一样的。因为在系统中它实际上都是声明成了public final static int a。
写抽象方法时需要注意的一点
abstract private move(){},这个是错的应该是abstract private move();因为抽象方法没有方法体。
抽象类
抽象类方法的访问权限
JDK 1.8以前,抽象类的方法默认访问权限为protected
JDK 1.8时,抽象类的方法默认访问权限变为default
抽象类与接口的比较
异:
接口 | 抽象类 |
---|---|
不能有构造方法 | 可以有构造方法 |
没有普通成员变量 | 可以有普通成员变量 |
所有方法必须都是抽象的,不能有非抽象的普通方法 | 可以包含非抽象的普通方法 |
抽象方法只能是public类型的,并且默认即为public abstract类型 | 抽象方法的访问类型可以是public,protected |
不能包含静态方法 | 可以包含静态方法 |
定义的变量只能是public static final类型,并且默认即为public static final类型 | 静态成员变量的访问类型可以任意 |
一个类可以实现多个接口 | 一个类只能继承一个抽象类 |
同:
- 都可以包含静态成员变量
- 不能直接实例化