接口和抽象类的区别(全面)

抽象类 接口
默认的方法实现 可以有默认的方法实现 jdk1.8之前不能有默认方法实现,jdk1.8开始支持用default进行默认方法的实现,这个默认实现方法并不强迫实现类去实现
实现 子类使用extends关键字来继承抽象类,如果子类不是抽象类的话,那么子类要实现抽象类中的所有声明的方法 子类通过implements来实现接口,子类需要实现接口中所有声明的方法
构造器 可以有 不可以有
与正常java类的区别 除了不能实例化抽象类外,和普通java类没什么区别 接口是完全不同的类型
main方法 可以有main方法,并且可以运行 不可以有main方法
多继承 可以继承一个类和实现多个接口 只可以“继承”一个或多个其他接口
默认修饰符 参考下边默认访问权限 方法:public abstract ; 属性:public static final
默认访问权限 JDK 1.8以前,抽象类的方法默认访问权限为protected(可以是public和protected),JDK 1.8时,抽象类的方法默认访问权限变为default(可以是public和protected或者不写) JDK 1.8以前,接口中的方法默认,也必须是public的(只能用public),JDK 1.8时,接口中的方法默认public的,也可以是default的(可以是public和default),JDK 1.9时,接口中的方法可以是private的(可以是public和default和private)
发布了46 篇原创文章 · 获赞 16 · 访问量 6320

猜你喜欢

转载自blog.csdn.net/Jarbein/article/details/103991504