抽象类和接口的关系

凭君莫话封侯事,一将功成万骨枯。 —曹松《己亥岁二首·僖宗广明元年》

参数 抽象类 接口
默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现
实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现
构造器 抽象类可以有构造器 接口不能有构造器
与正常Java类的区别 只是比普通方法多了抽象方法 接口是完全不同的类型
访问修饰符 抽象方法可以有publicprotecteddefault这些修饰符 接口方法默认修饰符是public。你不可以使用其它修饰符。
main方法 抽象方法可以有main方法并且我们可以运行它 接口没有main方法,因此我们不能运行它。
多继承 抽象方法可以继承一个类和实现多个接口 接口只可以继承一个或多个其它接口
速度 它比接口速度要快 接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。
补充 1.abstract不能与final并列修饰同一个类。
2.abstract 不能与private、static、final或native并列修饰同一个方法。
3.抽象方法必须由子类来进行重写
4.可以不含抽象方法
1.接口中可以定义“成员变量”,或者说是不可变的常量
接口中的“成员变量”会自动变为为public static final
2.接口中不存在实现的方法。
必须是抽象方法(自动添加)

猜你喜欢

转载自blog.csdn.net/logicr/article/details/80920319
今日推荐