继承
继承的基本概念:
所谓继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。
如果类 B 从类 A 派生,或者说类 B 扩展自类 A,或者说类 B 继承类 A,
则称类 A 为"父类",也称为超类、基类;
称类 B 为"子类",也称为次类、扩展类、派生类。
继承的形式:
【访问权限修饰符】【修饰符】 子类名 extends 父类名{子类体}
继承的作用:
代码复用,子类对象可以直接调用父类的非private属性和方法,方便;
修改父类即可修改子类的相关项,便于修改和维护。
继承的特点:
一个类只能有一个父类。
子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
构造方法与继承:
子类构造方法总是先调用父类构造方法。
默认情况下,调用父类无参构造方法。
可以在子类构造方法的第一行,使用super关键字调用父类任意一个构造方法。
*由于默认的构造方法不带参数,所以,如果在父类中定义了带参数的构造方法,必须定义无参数的构造方法。
this关键字和super关键字
super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。
this关键字:指向自己的引用。
在子类构造方法中要调用父类的构造方法,需要注意:super语句只能出现在子类构造方法体的第一行。如果第一条语句没有调用父类的构造方法,系统将会自动地在这个位置上插入一条调用父类默认构造方法的语句,即super();
子类局部变量覆盖父类成员变量时,用“super.成员变量名”来引用父类成员变量。
覆盖
定义:
子类可以重写父类中某一个方法,称为方法覆盖,也称方法重写。
调用:
如果是继承的方法,是没有必要使用 super 来调用,直接即可调用。但如果子类覆盖或重写了父类的方法,则只有使用 super 才能在子类中调用父类中的被重写的方法。
Final修饰符
final修饰类,不能被继承。
final修饰方法,不能被子类覆盖。