abstract class | interface |
声明方法的存在而不去实现它的类被叫做抽象类或者使用 abstract关键字修饰的类即为抽象类 | 接口是抽象类的变体。在接口中,所有方法都是抽象的 |
抽象类中可以有抽象方法,也可以有正常的方法 | 只能有抽象方法,权限全部是public的 |
有构造方法 | 没有构造方法 |
子类继承抽象类,如果子类不能实现所有的抽象方法,那么子类也要声明为抽象类 | 子类实现接口,如果子类不能实现接口中的所有抽象方法,那么子类也要声明为抽象类 |
可以有属性 | 属性必须是static final的 |
可以有静态方法 | 可以有静态方法(老版jdk不能有静态方法) |
单继承 | 多继承 |
抽象类和接口的关系:
接口是否可以继承接口 可以
接口是否可以实现接口 不可以
抽象类是否可以实现接口 可以
抽象类是否可以继承实体类 可以
抽象类是否可以继承接口 不可以