java继承--子父类中的构造函数

1 子父类构造函数的特点

  • 在子类构造对象时,发现,访问子类构造函数时,父类构造函数也运行了。
    原因是:在子类的构造函数中第一行有一个默认的隐式语句。 super();
    类似于this(); this();调用的是本类的构造函数
  • 子类构造函数默认调用的是父类中的空参数构造函数,如果需要调用父类中带参数的构造函数,可以在子类构造函数中定义。如:super(6);
  • 如果父类中没有定义空参数构造函数,那么子类的构造函数必须用super明确要调用父类中哪个构造函数。
  • 同时子类构造函数中如果使用this调用了本类构造函数时,那么super就没有了,因为super和this都只能定义第一行,所以只能有一个。但是可以保证的是,子类中肯定会有其他的构造函数访问父类的构造函数。
  • Object是所有类的父类。
  • supre语句必须要定义在子类构造函数的第一行。因为父类的初始化动作要先完成。

实例

class Fu
{
    int num ;
    Fu()
    {
        num =10;
        System.out.println("A fu run");
    }
    Fu(int x)
    {
        System.out.println("B fu run..."+x);
    }
}
class Zi extends Fu
{
    int num;
    Zi()
    {
        //super();//调用的就是父类中的空参数的构造函数。
                  //类似于this() 调用的是本类的构造函数 
        
        System.out.println("C zi run"+num);
    }
    Zi(int x)
    {
        this();
//        super(x); //如果需要调用父类中带参数的构造函数,可以在子类构造函数中定义。
        System.out.println("D zi run "+x);
    }
}

class  ExtendsDemo4
{
    public static void main(String[] args) 
    {
        new Zi(6);
    }
}
class Demo//extends Object  //Object是所有类的父类
{
    /*
    
    Demo()
    {
        super();
        return;
    }
    */
}

猜你喜欢

转载自blog.csdn.net/lancecrazy/article/details/84628708