4.5 子类的实例化过程

2020-05-13  本文已影响0人  姗婷

子类的实例化过程
注意:super语句一定定义于子类构造函数的第一行
结论:子类的所有构造函数,默认都会访问父类中空参数的构造函数
因为子类每一个构造函数内的第一行都有一句隐式super();
当父类中没有空参数构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数
当然:子类的构造函数第一行也可以手动指定this语句来访问本类中的构造函数
子类中至少会有一个构造函数会访问父类中的构造函数
this和super都只能写第一行

class Fu  //extends Object
{
    Fu()
    {
        System.out.println("Fu");
    }
    Fu(int x)
    {
    
        System.out.println("FU...."+x)
    }
}
class Zi extends Fu
{
    Zi()
    {
        //super();省略了super();
        System.out.println("zi run");
    }
    Zi(int x)
    {
        //this();
            //super();//省略了super();
        System.out.println("zi...."+x);
    }
}
class Person
{
    private String name;
    Person(String name)
    {
        this.name = name;
    }
    void show(){}
}
class Student extends Person
{
    Student(String name)
    {
        super(name);//父类定义完的内容子类想要用,构造函数用super()
    }
    void method()
    {
        super.show();//一般函数用super.
    }
}
class ExtendsDemo4
{
    public static void main(String[] args)
    {
        Zi z1= new Zi(4);//输出fu,zi...+4
        Zi z = new Zi();//输出fu,zi
    }   
}
上一篇 下一篇

猜你喜欢

热点阅读