下文笔者将讲述abstract class和interface的区别,如下所示:
abstract class 同 interface不同点: abstract class:抽象类,它不能创建实例对象 abstract class中可以定义抽象方法,也可以定义普通方法 子类中需实现父类(abstract Class)中所有抽象方法,如无法实现,则必须将子类中的方法定义为abstract类型 interface(接口):抽象类的特别实现,接口中所有方法都是抽象的,除(java8中的default方法和static方法) 接口中的成员必须为 public static final修饰符
abstract class及interface语法上不同之处
- 抽象类可以有构造方法但是接口中不能有构造方法
- 抽象类中可以有普通成员变量,接口中没有普通成员变量
- 抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法(只能包含一个default 和 static方法)
- 抽象类中的抽象方法的访问类型可以是public,protected及默认类型
接口中的抽象方法只能是public类型的(默认修饰符public abstract) - 抽象类中可以包含静态方法,接口中不能包含静态方法
- 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,
但接口中定义的变量只能是public static final类型(默认为public static final类型) - 一个类可以实现多个接口,但只能继承一个抽象类
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。