面向对象知识点整理(2)
抽象类
概念
当定义了抽象函数的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。
抽象类的特点
1、抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。
2、抽象类不可以直接创建对象,原因:调用抽象方法没有意义。
3、只有覆盖了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。
注意:abstract 不可以与 private final static共存
接口
接口概念
接口是功能的集合,
接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成。
这样将功能的定义与实现分离,优化了程序设计。
接口的特点
1. 接口中的方法均为公共访问的抽象方法
2.接口中无法定义普通的成员变量(都是用public static final修饰的常量)
接口中成员的特点
1、接口中可以定义变量,但是变量必须有固定的修饰符修饰,public static final 所以接口中的变量也称之为常量,其值不能改变。
2、接口中可以定义方法,方法也有固定的修饰符,public abstract
3、接口不可以创建对象。
4、子类必须覆盖掉接口中所有的抽象方法后,子类才可以实例化。否则子类是一个抽象类。
接口的好处
1、接口的出现扩展了功能。
2、接口的出现避免了单继承的局限性。
3、接口的出现降低了耦合性,即设备与设备之间实现了解耦。
接口和抽象类的异同
相同点
1. 都位于继承的顶端,用于被其他类实现或继承;
2.都不能直接实例化对象;
3.都可以包含抽象方法,其子类都必须覆写这些抽象方法;
不同点
1.抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;
2.一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)
3.抽象类是这个事物中应该具备的内容, 继承体系是一种 is..a关系
4.接口是这个事物中的额外内容,继承体系是一种 like..a关系