Java中接口(interface)和抽象类(abstract)的区别

抽象类:被abstract关键词修饰的类叫做抽象类,被abstract关键词修饰的方法叫做抽象方法。 抽象方法只有声明没有方法体。

1.抽象类只能被继承不能实例化

2.子类在继承抽象父类时,必须实现父类中的抽象方法,否则子类也被定义为抽象类

3.定义了抽象方法的class必须被定义为抽象类

4.抽象类不一定包含抽象方法

接口:使用interface关键词修饰接口

1.接口中不能存在成员变量和构造方法,只能包含常量、抽象方法和默认方法等。

2.一个类可以实现多个接口

3.一个接口可以继承(extends)另一个接口

4.接口中包含抽象方法时,实现类要实现接口中定义的所有抽象方法

5.默认方法(default):实现类可以不用重写default方法

相同点:

1.都不能被实例化

2.子类实现了接口和抽象类中的抽象方法后才能实例化

不同点:

1.抽象类可以有定义和实现,方法可以在抽象类中实现;接口中只有定义,不能有方法的实现,可以定义default方法体

2.抽象类只能继承一个类;接口可以实现多个接口,并且接口之间允许多重继承

3.抽象类可以使用多个访问修饰符;接口只能使用public

5.抽象类中用static final定义常量;接口中无需关键字,只能定义常量且必须赋初始值,不能被修改

你可能感兴趣的:(java,开发语言,后端)