如何为子类创建构造函数

时间:2020-02-09 08:14:18

标签: java inheritance constructor

import java.util.*;

class A {

    protected int n;

    public A(int a) {
        n = a;
    }

    protected int disp() {
        return n;
    }
}

class B extends A {

    // what should i do here
}

public class Hello {

    public static void main(String[] args) {
        //Your Code Here
        int a =5;
        A obj= new B(a);
        System.out.print(obj.disp());
    }
}

2 个答案:

答案 0 :(得分:2)

您应该在B类中执行以下操作:

class B extends A {
  public B(final int a) {
    super(a);
  }
}

这里发生的是,我们正在调用父级(A)的构造函数

答案 1 :(得分:2)

重要的是,A是使用其构造函数之一初始化的。子类B中的构造函数与A中的构造函数的参数匹配是不必要。因此,您可以在子类B中定义任何构造函数,但请确保在其中调用super( <some int> )

例如,即使以下情况也可以。

class B extends A {
    public B(){ //Default constructor
        super( 1 );
    }
}

  1. 如果子类B中有多个构造函数,则每个子类都必须调用super( <some int> )
  2. 如果父类A中有多个构造函数,则在子类构造函数中,可以通过super( <params> )调用它们中的任何一个。