Costruttore

di il
4 risposte

Costruttore

Ragazzi ho questo codice
class Vehicle {
   String type = "4W";
   int maxSpeed = 100;

   Vehicle (String type,int maxSpeed) {
        this.type = type;
        this.maxSpeed = maxSpeed;
   }
}

class Car extends Vehicle {
   String trans;

   Car(String trans) {            <----- QUA
        this.trans = trans;        
   }
  
   Car(String type,int maxSpeed,String trans) {
        super(type,maxSpeed);
        this.trans = trans;
   }
}
l'errore sta "QUA" ed è questo "constructor Vehicle in class Vehicle cannot be applied to given types" grazie

4 Risposte

  • Re: Costruttore

    BANALE!
    OGNI costruttore DEVE SEMPRE CHIAMARE il costruttore della classe base.

    SE non lo fa il programmatore, lo fa il compilatore.

    MA SE LO FA il compilatore, LUI, il compilatore, CHI CHIAMA?

    Altro: OGNI CLASSE DEVE SEMPRE AVERE un costruttore.

    SE non lo fa il programmatore, lo fa il compilatore.

    MA SE LO FA il compilatore, LUI, il compilatore, COSA FA?
  • Re: Costruttore

    migliorabile ha scritto:


    BANALE!
    OGNI costruttore DEVE SEMPRE CHIAMARE il costruttore della classe base.
    quindi per compilare o tolgo il primo costruttore di Car o gli passo in argomento le variabili type e maxSpeed giusto?
  • Re: Costruttore

    maracaibo25 ha scritto:


    quindi per compilare o tolgo il primo costruttore di Car o gli passo in argomento le variabili type e maxSpeed giusto?
    In Vehicle esiste un solo costruttore: quello che hai definito tu esplicitamente Vehicle(String type,int maxSpeed)
    Quindi il costruttore di una sotto-classe DEVE invocare quello.

    Il secondo costruttore di Car è ok, perché fa super(type,maxSpeed); che è corretto come forma e concetto. Il primo costruttore di Car no, perché per default viene inserita una chiamata implicita super() che è SENZA argomenti. E non c'è nulla che corrisponde in Vehicle.

    Quindi hai almeno 2 scelte: o modifichi il costruttore in Car o modifichi Vehicle (es. aggiungendo un costruttore appropriato, banalmente uno senza argomenti, così che type/maxSpeed in Vehicle restano al loro default).
  • Re: Costruttore

    andbin ha scritto:


    maracaibo25 ha scritto:


    quindi per compilare o tolgo il primo costruttore di Car o gli passo in argomento le variabili type e maxSpeed giusto?
    In Vehicle esiste un solo costruttore: quello che hai definito tu esplicitamente Vehicle(String type,int maxSpeed)
    Quindi il costruttore di una sotto-classe DEVE invocare quello.

    Il secondo costruttore di Car è ok, perché fa super(type,maxSpeed); che è corretto come forma e concetto. Il primo costruttore di Car no, perché per default viene inserita una chiamata implicita super() che è SENZA argomenti. E non c'è nulla che corrisponde in Vehicle.

    Quindi hai almeno 2 scelte: o modifichi il costruttore in Car o modifichi Vehicle (es. aggiungendo un costruttore appropriato, banalmente uno senza argomenti, così che type/maxSpeed in Vehicle restano al loro default).
    ok grazie andbin
Devi accedere o registrarti per scrivere nel forum
4 risposte