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

在介绍两者的区别的时候,需要先了解一下两者的定义:

抽象类:简单粗暴的描述是包含抽象方法的类,但是这样定义并不准确,因为抽象类也可以不含有抽象方法,即使用abstract修饰的类必为抽象类,一定要注意:一个类如果含有抽象方法,则该类一定为抽象类;但是抽象类并不一定含有抽象方法。抽象类是不能被实例化的。

接口:泛指供其他类调用的方法或者函数。接口中的方法均为抽象方法,接口也是不能被实例化的。

抽象类和接口的区别:

1.抽象类中可有构造方法,而接口是没有构造方法的。

2.抽象类中可以有普通的成员变量的,而接口中是没有普通的成员变量的。

3.抽象类中可以含有非抽象的普通方法,而接口中的方法必须为抽象方法,不能含有非抽象的普通方法。

4.抽象类中的抽象方法的访问类型可以为public,protected,而接口中的抽象方法的访问类型只能为public abstract。

5.抽象类中可以含有静态方法,而接口中则没有静态方法。

6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量可以被任意的访问类型修饰,但是接口中的静态成员变量只能被public static final修饰。

7.一个类可以实现很多接口,但是只能继承一个抽象类。

抽象类和接口的相同点:

1.都不能被实例化。

2.接口的实现类和抽象类的子类都只有实现了其中的方法后才能被实例化。

猜你喜欢

转载自blog.csdn.net/yangmingtia/article/details/85541196