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());
    }
}
0
dinesh babu 9 feb. 2020 a las 11:14

2 respuestas

La mejor respuesta

Lo importante es que A se inicializa utilizando uno de sus constructores. no es necesario que el constructor en la clase secundaria B coincida con los parámetros de los constructores en A. Por lo tanto, puede definir cualquier constructor en la clase secundaria B pero asegúrese de llamar a super( <some int> ) en eso.

Por ejemplo, incluso lo siguiente está bien.

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

Además

  1. Si tiene más de un constructor en la clase secundaria B, cada uno de ellos debe llamar a super( <some int> ).
  2. Si tiene más de un constructor en la clase principal A, entonces en el constructor de la clase secundaria, llamar a cualquiera de ellos a través de super( <params> ) servirá.
2
Sree Kumar 9 feb. 2020 a las 08:39

Debe hacer lo siguiente en la clase B:

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

Lo que sucede aquí es que estamos llamando al constructor de nuestro padre (A)

2
Yonatan Karp-Rudin 9 feb. 2020 a las 08:19