java接口与抽象类的区别
Java中的接口和抽象类有以下区别:
1. 实现方式:接口中的所有方法都是抽象的,而抽象类可以包含已经实现的方法。
2. 多重继承:接口可以多重继承,而抽象类只支持单一继承。
3. 对实现的限制:接口只能包含方法的定义,没有实现,而抽象类可以包含一些方法的实现。
4. 构造方法:接口中没有构造方法,而抽象类中有构造方法。
5. 方法访问修饰符:接口中的方法默认为public,而抽象类中的方法可以使用任何类型的访问修饰符。
6. 实现方式:实现接口的类必须实现全部的方法,而继承抽象类的子类可以选择性的实现、覆盖或者不实现其中的某些方法。
7. 变量类型:Java接口中声明的变量默认都是final的,而抽象类可以包含非final的变量。
需要注意的是,JDK 8 中接口可以定义 static 和 default 方法,并且这两种方法可以包含具体的代码实现。而抽象类中的方法可以是private,protected或者是public。