Quote Originariamente inviata da Gas75 Visualizza il messaggio
dovrei dare alla superclasse un costruttore (senza parametri in questo caso) senza alcun ordine di stampare, oppure non preoccuparmene e fare creare a Java il costruttore di default, giusto?[/COLOR]
Sì. Se TC avesse:
- un costruttore esplicito con super() esplicito --> ok
- un costruttore esplicito ma vuoto --> ok
- nessun costruttore esplicito --> ok (il compilatore inserisce quello di default):

Ma la costruzione, ricorda, deve SEMPRE arrivare fino a java.lang.Object. Se TC avesse 1 costruttore ma private, TC compila ma TestClass NON ti compila più, in quanto non può "vedere" alcun costruttore accessibile.



P.S. prova questo:

codice:
public class Main {
    public static void main(String[] args) {
        new B();
    }
}

class A {
    private int a = val();

    public A() {
        System.out.println("A()");
    }

    private int val() {
        System.out.println("A val()");
        return 123;
    }
}

class B extends A {
    private int b = val();

    public B() {
        System.out.println("B()");
    }

    private int val() {
        System.out.println("B val()");
        return 123;
    }
}