接口和抽象类
方法类型
接口(interface)
-
方法默认是抽象的
-
方法可以没有方法体
-
在jdk1.8中接口中的静态方法和默认方法可以有具体的方法体
//没有方法体
void test();
//默认方法
default void test1() {
//方法实现
}
//静态方法
static void test2() {
//方法实现
}
抽象类
- 可以有抽象方法也可以有非抽象方法
static void test(){
}
public abstract void test1();
实例化
接口和抽象类都不可以被实例化
变量
接口
变量默认都是final修饰的
接口中只有静态变量和最终变量
抽象类
变量可以是静态变量,非静态变量,非最终变量,也可以是最终变量
实现方式
接口
可以使用关键字implements
实现接口,接口无法提供抽象类的实现
抽象类
可以使用关键字extends
继承抽象类,抽象类可以提供接口的实现
扩展方式
接口
接口只能扩展另一个接口
抽象类
抽象类可以扩展多个抽象类,且实现多个接口
访问性
接口
接口中的成员都是public
公共的
抽象类
抽象类中的成员可以具有类成员.具体有protected
,private
,public
接口中大多数都是常用的一些功能,方便后续的维护
抽象类中大多数时候是一个公共类的角色,是将来继承它的类的一个模板
功能需要累积时用抽象类,不需要累积时用接口。
参考自: