抽象类和接口区别(1.8版本后)
| 接口 | 抽象类 |
实现方式 | 多重实现 | 只能单继承 |
构造方法 | 无 | 可以有构造方法 |
方法 | 原来只能有抽象方法,1.8后可以有静态方法和 default方法(用default关键字修饰的方法),也就是接口中可以有实现方法 | 可以有默认方法的实现。可以有main方法 |
属性 | public static final | 各种修饰符均可
|
public class Main {
public static void main(String[] args) {
JDK8Interface.staticMethod(); // static方法必须通过接口类调用
new JDK8InterfaceImpl().defaultMethod(); //default方法必须通过实现类的对象调用
}
}
public class JDK8InterfaceImpl implements JDK8Interface {
//实现接口后,因为默认方法不是抽象方法,所以可以不重写,但是如果开发需要,也可以重写
}
public interface jiekou {
public default int fun() {
System.out.print("我是默认方法,子类可以不重写");
}
public static int fun2() {
System.out.print("我是静态方法,子类可以不重写");
}
public abstract int fun3();//抽象的方法,子类要有具体实现,不能有方法体
}