接口和抽象类的区别
抽象类和普通类的区别:抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
抽象类不能用来创建对象;如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法,抽象方法只有方法的声明,没有方法体。抽象类是用来捕捉子类的通用特性的。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。
Java中接口使用interface关键字修饰。接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。
抽象类的特点
1、抽象类不能被实例化,即不能使用new关键字来实例化对象,只能被继承。
2、包含抽象方法的一定是抽象类,但是抽象类不一定含有抽象方法。
3、抽象类中的抽象方法的修饰符只能为public或者protected,默认为public。
4、抽象类中的抽象方法只有方法体,没有具体实现。
5、如果一个子类实现了父类(抽象类)的所有抽象方法,那么该子类可以不必是抽象类,否则就是抽象类。
6、抽象类可以包含属性、方法、构造方法,但是构造方法不能用于实例化,主要用途是被子类调用。
接口和抽象类都是Java中的概念,它们有很多相似之处,但也有很多区别。其中最显著的区别是:抽象类可以有构造方法,接口中不能有构造方法;抽象类中可以有普通成员变量,接口中没有普通成员变量;抽象类中可以包含静态方法,接口中不能包含静态方法;一个类可以实现多个接口,但只能继承一个抽象类;接口可以被多重实现,抽象类只能被单一继承。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!