抽象类和抽象方法
关键字:abstract
:由abstract修饰的方法叫抽象方法;由abstract修饰的类叫抽象类。
-
抽象方法
只有功能声明,没有方法体。 - 抽象类可以包含抽象方法,也可以不包含抽象方法,抽象类可以有非抽象方法。——也就是说,抽象类中是可能有方法体的,只要那个方法不是抽象方法就行。
- 抽象类不能被实例化,就是不能产生实例化对象,所以必须被继承才能使用。——也就是说,抽象类一定是一个父类。抽象类(abstract)一定不能和final同时使用。
- 子类继承抽象父类并实现父类的所有抽象方法才可以实例化,如果有未实现的抽象方法则该子类仍为一个抽象类,无法创建对象。
- 抽象类可以实现接口,抽象类也可以继承抽象类
- 抽象类拥有构造方法,对自身进行初始化,供子类使用
接口
关键字:interface
- 接口不能实例化,只能被实现。
- 接口的所有方法都是抽象的,不能有方法体。接口只能做方法声明。(java8中 接口可以有实现方法,使用default修饰)
- 如果一个类实现接口时没有实现全部接口方法,那么该类也只能为抽象类。
- 接口不可以实现接口,但可以继承一个或多个接口
-
特征
- 所有成员变量都是public、static、final类型,并且必须赋初值。
-
所有方法都是public、
abstract类型
。 - 所有嵌套类型(类或接口)都是public、static类型。
- 因为成员变量都是static的,所以接口里的成员变量不再属于子类的某个对象,而是属于这个接口,子类的对象里就没有父类这个成员变量。如果要使用该变量,直接接口名.成员变量 即可调用。
- 接口没有构造方法
抽象类与接口的区别
- 抽象类中的方法可以有方法体,接口中不行
- 抽象类的成员变量可以是各种类型的,接口中的成员变量只能是public static final类型
- 一个类只能继承一个抽象类,而一个类可以实现多个接口
版权声明:本文为weixin_44847031原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。