接口和抽象类的区别

接口和抽象类的区别

比较点抽象类接口
默认方法 抽象类可以有默认的方法实现 java 8之前,接口中不存在方法的实现
实现方式 子类使用extends关键字来继承抽象类.如果子类不是抽象类,子类需要提供抽象类中所声明方法的实现 子类使用implements来实现接口,需要提供接口中所有声明的实现.
构造器 抽象类中可以有构造器 接口中不能
和正常类区别 抽象类不能被实例化 接口则是完全不同的类型,更不用谈被实例化(只有类才可以被实例化为对象)
访问修饰符 抽象方法可以有public,protected和default等修饰 接口默认(只能)是public,不能使用其他修饰符
继承 一个子类只能存在一个父类(单继承) 一个子类可以存在多个接口(多继承)
添加新方法 抽象类中添加新方法,可以提供默认的实现,因此可以不修改子类现有的代码 如果往接口中添加新方法,则子类中需要实现该方法
原文地址:https://www.cnblogs.com/longmo666/p/13569490.html