在java中用来调用父类构造方法的关键字是

Python024

在java中用来调用父类构造方法的关键字是,第1张

java中的关键字super有两种用法。

一、调用父类的构造方法,如:

class A

{

A(String s)

{

System.out.println(s)

}

}

class B extends A

{

B()

{

super("父类")

System.out.println("子类")

}

}

完整例子如下图:

二、调用父类的实例方法,如:

class A

{

void f1()

{

System.out.println("A.f1")

}

void f2()

{

System.out.println("A.f2")

}

}

class B extends A

{

void f()

{

super.f1()

f2()

}

void f2()

{

super.f2()

System.out.println("B.f2")

}

}

完整例子如下图:

你关系弄反了,应该是Son extends Father。。。你子类里面没有写构造函数是不是。。。。系统会默认调用父类的无参构造函数,但是你写了一个带参的构造函数,而且把无参的构造函数删掉了,当然会报编译错误啊

目测你的代码是

public class Parent{

public Parent(String name){

}

}

public class Son extends Parent{

//如果这里不显示调用父类的无参构造函数,编译报错....

public Son(String name){

super(name) //这样才是正确地

}

}

不对。。子类默认继承父类的构造方法  子类创建对象时默认调用自身的空构造器,并在子类构造器中隐式的调用super()  即调用父类的空构造器,如果父类重载了构造器,那么子类必须初始化父类构造器否则编译错误!

class Animal{

    private String name

    //重载父类构造器

    Animal(String name){

        this.name = name

    }

     

}

class Dog extends Animal{    

    //必须加上

    //    Dog(String name){

    //        super(name)

    //    }

}

class Test{

    public static void main (String[] args){

        Animal a = new Dog()

        //首先调用Dog空构造器 Dog(){ }构造器中第一句话为super()但父类已覆盖空构造器所以

        //编译产生错误应添加子类构造器初始化父类构造器

        //

        

    }

}