Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [JAVA] problema compilazione @Override

    Salve

    Avrei il seguente problema: se compilo ed eseguo il programma che sto scrivendo su eclipse è tutto ok ma quando poi lo vado ad eseguire tramite linea di comando mi dà il seguente errore

    method does not ovverride a method from its superclass

    da cosa dipende e come posso risolvere????

    Grazie a tutti

  2. #2
    Non so cosa faccia il tuo codice, né come lo faccia, visto che non hai dato informazioni al riguardo però magari il seguente esempio sull'uso dell'annotazione @Overrides ti potrebbe essere utile ( o se non a te a qualcun altro ) :

    L'annotazione @Overrides indica che un metodo ha intenzione di sovrascrivere la dichiarazione di un metodo della super-classe. Se un metodo è contrassegnato con questa annotazione ma non sovrascrive nessun metodo della super-classe, il compilatore genera un errore.

    Il seguente esempio illustra l'uso dell'annotazione @Override
    Codice PHP:
    public class Parent {
        
        public 
    void foo(int x) {
            
    System.out.println("Parent.foo(int x) called.");
        }

    Codice PHP:
    public class Child extends Parent {
        @
    Overrides
        
    public void foo() {
            
    System.out.println("Child.foo() called.");
        }

    La mia intenzione era quella di estendere la classe Parent e sovrascrivere il metodo foo(int x) nella classe figlio. Per errore nessun metodo della classe Child sovrascrive un metodo della classe Parent, in quanto c'è stato un errore nella firma del metodo. Ovviamente si tratta di un bug. In passato questo genere di errori sarebbero stati scoperti solo al run-time dopo molto tempo speso a fare il debugging. Ora, grazie all'uso dell'annotazione @Overrides possiamo risparmiarci questo tempo perso. Quando un metodo è contrassegnato dall'annotazione @Overrides, il compilatore controllerà se effettivamente la classe figlio realmente sovrascrive il metodo della classe genitore.
    Quando il metodo non è sovrascritto il compilatore restituisce il seguente errore (che poi è il tuo):

    javac -source 1.5 Parent.java Child.java
    Child.java:3: method does not override
    a method from its superclass
    @Overrides
    ^
    1 error


    Non appena ci accorgiamo dell'errore modifichiamo la firma del metodo foo nella classe figlio e riproviamo:

    Codice PHP:
    public class Child extends Parent{
        @
    Overrides
        
    public void foo(int x) {
            
    System.out.println("Child.foo(int x) called.");
        }

    La compilazione ora va a buon punto

    Facci sapere.

    Matteo
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

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.