抽象类(abrstract class)与接口(interface)有何异同

Posted wutongshu-master

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类(abrstract class)与接口(interface)有何异同相关的知识,希望对你有一定的参考价值。

抽象类:如果一个类中包含抽象方法(用abstract修饰的方法),那么这个类就是抽象类

接口:是指一个方法的集合,接口中的所有方法都没有方法体

相同点:

1)都不能被实例化

2)接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化

 

不同点:

1)接口只有定义,其方法不能再接口中实现,只有实现接口的类才能实现接口中定义的方法,而抽象类既可以有定义也可以有实现

2)接口需要实现(implements),抽象类只能被继承(extends)。一个类可以实现多个接口,但只能继承一个抽象类,因此使用接口可以间接地达到

多重继承的目的

3)接口中的成员变量默认为public static final,表示静态、不能被修改的,而且必须给其赋初值,其方法会被隐式地指定为public abstract方法且只能是public abstract方法

抽象类可以有各种类型的成员变量,默认为default(本包可见),也可以被定义为private,protected和public

4)接口被运用于实现比较常用的功能,便于日后维护或者添加删除方法,而抽象类更倾向于充当公共类的角色,不适用于日后重新对里面的代码进行修改

以上是关于抽象类(abrstract class)与接口(interface)有何异同的主要内容,如果未能解决你的问题,请参考以下文章

abstract class与 interfacer

类枚举与接口

抽象类与接口

转载:java中抽象类和接口的作用与区别

抽象类与接口的区别

PHP中接口与抽象类的异同点有哪些