6. java 的继承

一、继承中的构造函数

继承关系中,父子类构造方法的访问特点:

1. 子类构造方法当中有一个默认隐含的“super()”调用,所以一定是先调用的父类构造,后执行的子类构造。
2. 子类构造可以通过super关键字来调用父类重载构造。
3. super的父类构造调用,必须是子类构造方法的第一个语句。不能一个子类构造调用多次super构造。
总结:
子类必须调用父类构造方法,不写则赠送super();写了则用写的指定的super调用,super只能有一个,还必须是第一个。
public class Fu {
    public Fu() {
        System.out.println("父类无参构造");
    }
    public Fu(int num) {
        System.out.println("父类有参构造!");
    }
}

public class Zi extends Fu {
    public Zi() {
        super(); // 在调用父类无参构造方法
//        super(20); // 在调用父类重载的构造方法
        System.out.println("子类构造方法!");
    }
    public void method() {
//        super(); // 错误写法!只有子类构造方法,才能调用父类构造方法。
    }
}
二、super 关键字

super关键字用来访问父类内容,用法有三种:
1. 在子类的成员方法中,访问父类的成员变量。
2. 在子类的成员方法中,访问父类的成员方法。
3. 在子类的构造方法中,访问父类的构造方法。
public class Zi extends Fu {
    int num = 20;
    public Zi() {
        super();
    }
    public void methodZi() {
        System.out.println(super.num); // 父类中的num
    }
    public void method() {
        super.method(); // 访问父类中的method
        System.out.println("子类方法");
    }
}

三、this 关键字
this关键字用来访问本类内容。用法也有三种:

1. 在本类的成员方法中,访问本类的成员变量。
2. 在本类的成员方法中,访问本类的另一个成员方法。
3. 在本类的构造方法中,访问本类的另一个构造方法。
在第三种用法当中要注意:
A. this(...)调用也必须是构造方法的第一个语句,唯一一个。
B. super和this两种构造调用,不能同时使用。

posted @ 2020-08-28 11:47  爱看星星的稻草人  阅读(127)  评论(0编辑  收藏  举报