Errore Compilazione invocazione metodo figlio

di il
3 risposte

Errore Compilazione invocazione metodo figlio

Cao a tutti, volevo capire perchè il seguente codice java mi da errore


public class a extends b {
public static void main(String[] args) {
Short x = 7;
System.out.println(sum(x, 6));
}
}
class b {
int sum(int x, int y) { return x + y; }
}

Errore di compilazione per la funzione sum. essendo a figlio di b, ed essendo sum pubblico, tale metodo è certamente ereditato da a, ma il compilatore dice che non posso eseguirlo in un consesto statico.. che vuol dire? anche se non ho messo this. il metodo sum dovrebbe appoggiarsi sull'istanza corrente di a. Forse è perchè sono nel main, quindi non esiste un'istanza di a a tempo di esecuzione?

3 Risposte

  • Re: Errore Compilazione invocazione metodo figlio

    Credo puoi trovare altri messaggi causati da questo errore di compilazione, dentro a un metodo static puoi richiamare esclusivamente altri variabili e metodi static in quanto i static sono sempre inizializzati, mentre quelli non static sono inizializzati solo ed esclusivamente quando viene creato esplicitamente un oggetto, quindi anche con this.sum(), o super.sum() credo che non cambi la presenza dell'errore. Questo e' anche il motivo per cui si possono usare molti metodi della libreria predefinita senza dove istanziare nessun oggetto.
  • Re: Errore Compilazione invocazione metodo figlio

    Però se nel main avessi creato un oggetto del tipo:
    b elemento = new a();
    b.sum(x,6);
    questo avrebbe funzionato giusto?
  • Re: Errore Compilazione invocazione metodo figlio

    Si, il modo migliore per saperlo e' provare.
Devi accedere o registrarti per scrivere nel forum
3 risposte