Java抽象类和接口的区别
java抽象类:
- 1,抽象类中应至少有一个抽象方法(只有定义没有实现,且用abstract标记)。
- 2,抽象类中可以有具体方法。
- 3,抽象类不可实例化。
- 4,抽象类的子类如果有未实现的方法,则要标记未抽象类。
- 5,抽象类可以创建一个抽象类的变量,只能引用非抽象子类的对象。
接口
-
1,接口绝不会有实例字段,可以定义常量,且总是被(public static final)进行修饰。
-
2,接口中所有方法自动是Public方法。(在定义接口时,可以不用写明public)。
-
3,使用instanceof可以检查一个对象是否实现了某个特定接口。
if(子类 instanceof 接口名){}
-
4,接口中可以有静态方法,java9之后接口可以有私方法,这些方法有实例方法或者是静态方法,这些方法只能在接口中调用,使用非常有限。
-
5,接口可以提供一个默认方法,使用default修饰标记该方法。
public interface Comparable<T> { default int compareTo(T other){ return 0; } }
-
6,当超类和接口中的方法冲突时,只会考虑超类中的方法,(类优先原则)。