Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    5

    Ereditarietà errore: cannot find symbol

    premesso che sono un neofita il mio problema è il seguente: ho due classi

    //libro.java

    package libreria

    public class Libro {
    public Libro(int numeroPagine, int prezzo){
    this.numeroPagine=numeroPagine;
    this.prezzo=prezzo;
    }
    private int numeroPagine;
    private int prezzo;
    public void display(){
    System.out.println("Libro:"+numeroPagine +prezzo);
    }
    }


    //libroJava.java

    package libreria

    public class LibroJava extends Libro {
    public LibroJava(){}

    }


    in fase di compilazione mi da il seguente errore :
    symbol : constructor Libro()
    location: class libreria.Libro
    public LibroJava(){}

    Se elimino il costruttore di Libro compila senza errori. La sola presenza del costruttore LibroJava mi segnala l'errore (IDE Netbeans), oppure aggiungendo qualsiasi tipo di parametro nel costruttore LibroJava. A questo punto ho pensato che l'errore fosse di tipo concettuale, e mi sono posto la seguente domanda se creo due classi di cui una ereditata non devo implementare il costruttore? domanda che naturalmente tutti i testi che ho consultato mi sconsigliano di fare. Allora dov'è l'errore?

  2. #2

    Re: Ereditarietà errore: cannot find symbol

    Originariamente inviato da Coolbit

    public class Libro {
    public Libro(int numeroPagine, int prezzo){
    this.numeroPagine=numeroPagine;
    this.prezzo=prezzo;
    }

    }


    //libroJava.java

    package libreria

    public class LibroJava extends Libro {
    public LibroJava(){}

    }
    logico devi passare i parametri previsti per quella classe ovvero int numeroPagine, int prezzo quando la richiami.
    oppure prevedi un altro costruttore vuoto.

    ps: studia meglio java e leggi il regolamento

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    5

    [JAVA] Ereditarietà errore: cannot find symbol

    Scusami se non ho scritto il post non rispettando le regole del forum.

    Intendevi nella spiegazione logica che mi hai postato che il costruttore della classe LibroJava deve essere scirtta come segue:


    codice:
    public class LibroJava extends Libro {  
             LibroJava(int numeroPagine, int prezzo){} }

    se si l'errore continua ad essere presente, anche perchè ho specificatamente scritto "aggiungedo qualsiasi tipo di parametro nel costruttore" e aggiungo anche nella sua implementazione.

    P.S. : non è mia abituidine imparare le cose senza consultare il manuale e poi sopratutto chiedere aiuto a qualcuno, pertanto ti sarei grato se evitassi di fare apprezzamenti tipo studia meglio, grazie.

  4. #4
    non hai applicato la regola base dell'extends!
    ecco il codice corretto.

    codice:
    public class LibroJava extends Libro {
    	public LibroJava(int i, int p) {
    		super(i, p);
    	}
    
    }
    comunque c'era già una discussione simile a questo link

  5. #5
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Diciamo che se se A estende B e B ha nel costruttore campo1 e campo2, se definisci un costruttore per A, questo costruttore deve richiamare il costruttore di B.
    Java impone questo perché l'oggetto di tipo A è un oggetto di tipo B, solo più specifico.

    Per richiamare il costruttore di B devi usare super.

    Per dettagli prova a guardare questa pagina: (o un qualunque manuale che tratti di eredità in modo decente) pagina quasi a caso


    Ah...

    quando scrivi del codice, scrivilo ben indentato e tra i tag [ code][/ code] oppure [ php][/ php]

    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    5
    Grazie ragazzi per la spiegazione chiara ed esaustiva. Sul manuale era spiegato ma avevo interpretato male.
    Per quanto riguarda il ripetere degli argomenti non è facile trovarli in tempi rapidi in fourm così vasto anche usando la ricerca. Ciao alla prossima.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.