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

别来无恙 提交于 2020-01-16 02:30:08
抽象类 接口
默认的方法实现 可以有默认的方法实现 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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!