继承的基本概念: 共性抽取 提高代码复用性
1.多个类中,如果相同功能的代码,可以进行提取(把相同的代码)写在一个父类
2.子类继承父类 子类中可以直接使用父类中( 非private修饰的成员信息)成员信息
3.使用protected修饰的成员变量,子类中可以直接使用
语法: 修饰符 class 子类 extends 父类 {
}
继承关系下成员变量的访问特点: = 左边是谁,访问的就是谁
继承关系下成员方法的访问特点:new的是谁 访问的就是谁的方法
一个类中如果没有显示的赠送一个父类 则默认赠送一个Object顶级父类
继承下构造方法访问特点:
1.在子类的构造方法中,如果没有显示的写一个super(参数),
则默认赠送一个super(参数)
2. 如果要显示的写了,必须写在第一个语句
3. 一个类中如果没有显示的写一个构造方法 则默认赠送一个无参数的构造方法
举例说明:
//测试类
public class Test01{
public static void main(String[] args) {
//用"new"创建子类对象 调用zi类构造方法
Zi zi = new Zi(); //无参构造
System.out.printlin(zi.big);//输出 Fu类 无 参构造
Zi类 无 参构造
50
System.out.printlin("===========================");
//有参 在()传入对应类型,对应个数的实参
Zi z = new Zi(20);
System.out.printlin(z.small);//输出 Fu类 有 参构造
Zi类 有 参构造
20
}
//父类
class Fu{
protected int big = 50;
public Fu(){
System.out.println("Fu类 无 参构造");
}
public Fu(int a){
this.big = a;
System.out.println("Fu类 有 参构造");
}
}
//子类 继承 父类
class Zi extends Fu{
protected int small = 10;
public Zi() {
super();//没有显示的写一个super(参数),则默认赠送一个super(参数)
System.out.println("Zi类 无 参构造");
}
public Zi(int b) {
super(10);
this.small = b;
System.out.println("Zi类 有 参构造");
}
}
}
解释一下:
子类构造方法的 super();可以调用父类的构造方法。
不管super(); 是在子类的无参构造里面 还是有参构造里面,只要有就可以调用。
super后面括号 啥都没写,就调用父类无参构造,写了对应参数,就调用父类有参构造。