抽象类和接口区别

2018-06-12  本文已影响0人  吹破天

一.抽象类和接口区别:

抽象类由abstract关键字来修饰,接口由interface关键字来修饰。

抽象类中除了有抽象方法外,也可以有数据成员和非抽象方法;

而接口中所有的方法必须都是抽象的(public abstract类型),接口中也可以定义数据成员,但必须是常量(public static final)。

抽象类可以有构造方法,接口不能有构造方法

抽象类速度比接口速度要快,接口是稍微有点慢的,因为它需要时间去寻找在类中实现的方法。

与正常Java类的区别除了你不能实例化抽象类之外,它和普通Java类没有任何区别;接口是完全不同的类型

/*

参考资源http://blog.csdn.net/wei_zhi/article/details/52736350

https://www.cnblogs.com/jizuiku/p/7466609.html

*1.如果一个类中含有抽象方法(abstract),你还不定义为抽象类abstract,必然报错

*2.抽象方法中没有方法体

*3.抽象类中可以不含有抽象方法

*4.抽象类无法直接进行实例化操作,需要依靠子类采用向上转型的方式处理 ->TestDemo

*5.抽象类中方法只含有public,protected,不能含有private,不写默认为public

*6如果抽象类中方法用的是protected,则子类可以重写为public或protected;如果抽象类中方法用的是public,则子类可以重写为public

*7.子类(如果不是抽象类)则必须覆写抽象类之中的全部抽象方法(如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。);

*8.抽象类可以有构造函数,子类必须也有构造函数并且如果继承有参数的构造函数不用super则会报错

*9.抽象类可以用final声明么?

不能,因为抽象类必须有子类,而final定义的类不能有子类;

*10.抽象类可以有成员变量,当然public和protected,不能是private,final,而且可以是静态static

*11.抽象类方法也可以是static

* */

/*

在Java中,一个抽象类只能继承一个抽象类,但一个接口却可以使用extends关键字同时继承多个接口(但接口不能继承抽象类)。

由此可见,从继承关系来说接口的限制比抽象类少:

(1)一个抽象类只能继承一个抽象父类,而接口可以继承多个接口;

(2)一个子类只能继承一个抽象类,却可以实现多个接口(在Java中,接口的主要功能是解决单继承局限问题)

*/

上一篇 下一篇

猜你喜欢

热点阅读