extends —— 继承
1、目的:解决代码的复用性问题,继承要表达的是 一种有关系的类
2、方法的重写(Overwrite)
(1)定义:子类重写了父类的一个方法,要求:
A.方法名称相同,形参列表相同,返回类型相同
特例: 允许返回值类型是父类方法返回类型的子类
List method();
ArrayList method(); (其中ArrayList是
List的子类)
B.访问限定符:子类的不能比父类的更封闭,若父类的是public, 子类就不能是private.
(2)应用场景:一般发生在父类继承关系中,子类重写父类方法。
(3)目的:针对同一行为,子类表现出和父类不同 的方式
3、继承关系的访问
(1)子类的对象中,可以认为存在一个完全体的父类对象。父类的所有属性,在子类对象中都是存在,但可能没有访问权限
(2)访问权限:子类能否访问父类的属性和方法主要看父类成员的访问限定符是下面哪一个:
public/protected 可以
default 如果在一个包下是可以的
private 不可以
(3)在子类的构造方法中,必须调用父类的构造方法,且必须出现在第一行;如果子类的构造方法中没有显式调用父类的构造方法,则系统默认调用父类无参数的构造方法。 如果子类的构造方法中,既没有显式的调用父类构造方法,而父类中又没有默认无参的构造方法,则编译会出错,所以,通常我们需要显示的:super(参数列表),来调用父类有参数的构造方法。
(4)super关键字 (super不是引用)
1.明确访问父类的属性或者方法
2.显示调用父类的构造方法,且必须出现在第一行
Class A {
Public int a = 10;
Public void print() {System.out.println("父类的print");}
}
Class B extends A {
Public int a = 100;
Public void print() {System.out.println("子类的print");}
Public void test() {super.a;super.print();}
}