【继承】
【概述】:让类与类之间产生关系(子父类关系),子类可以直接使用父类中的非私有的成员变量及方法。
【继承格式】:public class 子类名 extends 父类名{ }
【适用场景】:当类与类之间,存在相同的内容,并且产生了is a的关系,就可以使用继承
【特点】:JAVA只支持单继承,不支持多继承,但支持多层继承(多层继承:子类A继承父类b,父类B可以继承父类C)
【方法重写】
【概述】:在继承体系中,子类出现了和父类一样的方法声明
【应用】:当子类需要父类的功能,而功能主体子类有自己特有内容,可以重写父类中的方法,这样既沿袭了父类的功能,又能定义子类中特有的内容
注意:
- 父类中的私有方法不能被重写
- 子类重写父类方法时,访问权限必须大于等于父类
- 父类静态方法,子类必须通过静态方法进行重写(注:静态方法不能被重写,如果在子类中,也存在一个方法声明一样的方法,可以理解为,子类将父类中同名的方法隐藏了起来,并非是方法重写),父类非静态方法,子类也必须通过非静态方法进行重写
- 方法重写与方法重载
- 方法重写:在继承体系中,子类出现和父类一样的方法声明(方法名、参数列表、返回值类型)
- 方法重载:在同一个类中,方法名相同,参数列表不同,与返回值无关
【继承中构造方法的访问特点】
子类在初始化的时候,有可能会使用到父类的数据,如果没有完成初始化,子类将无法使用父类的数据。因此,子类初始化之前,一定要先完成父类初始化
【初始化语句】:super();
【抽象类】
【概述】:
【抽象方法】:将共性的方法抽取到父类之后,发现该方法的实现逻辑不能在父类中给出具体明确,该方法就可以定义为抽象方法
【抽象类】:如果一个类中存在抽象方法,那么该类就必须声明为抽象类
【抽象方法的定义格式】:public abstract 返回值类型 方法名(参数)
【抽象类的定义格式】:public abstract class 类名{}
【注意事项】:
- 抽象类不能实例化(创建对象)
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
- 可以构造方法
- 抽象类的子类必须重写抽象类中的所有抽象方法或者子类也为抽象类
【代码块】
【概述】使用{ }括起来的代码被称为代码块
【分类】
- 局部代码块
位置:方法中定义
作用:限定变量的生命周期,及早释放,提高内存利用率
- 构造代码块
位置:类中方法外定义
特点:每次构造方法执行时,都会执行该代码块中的代码,并且在构造方法执行前执行
作用:将多个构造方法中相同的代码,抽取到构造代码块中,提高代码的复用性
- 静态代码块
位置:类种方法外定义
特点:需要通过static关键字修饰,随着类的加载而加载,并且只执行一次
作用:在类加载的时候做一些数据初始化的操作