一.抽象类和接口区别:
抽象类由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中,接口的主要功能是解决单继承局限问题)
*/
网友评论