Metodi con lo stesso nome [duplicato]

2

Supponiamo di avere un'interfaccia come

public interface anInterface
{
      public void aMethod();
}

e una classe come segue:

public class aClass
{
   public void aMethod()
   {
      //bla bla bla
   }
}

Ora definirò un'altra classe come Sottoclasse che estende aClass e implementa unInterfaccia, come in:

public class Subclass extends aClass implements anInterface
{
   public void aMethod()
   {
      //do something
   }
}

Che cosa fa esattamente aMethod () in sottoclasse? Implementa il metodo in un'interfaccia? Oppure sostituisce il metodo in aClass?

Cosa devo fare per fare in modo che aMethod () implementi il metodo di un'interfaccia? Allo stesso modo, se voglio sovrascrivere il metodo in aClass, cosa posso fare con esso?

    
posta Hedayat Mahdipour 25.11.2015 - 23:04
fonte

1 risposta

7

What does exactly aMethod() do in Subclass? Does it implement the method in anInterface? Or does it overrides the method in aClass?

Lo fa entrambi.

Il compilatore verifica che Subclass rispetti il suo contratto, essendo concreto: deve sostituire tutti i metodi astratti nella sua gerarchia, inclusi i metodi definiti sulle interfacce. Dal punto di vista del compilatore, un metodo di interfaccia e un metodo astratto su una classe regolare sono la stessa cosa: una dichiarazione di metodo senza definizione.

Il compilatore vede che Subclass deve avere un metodo con la firma esatta public void aMethod() . Ha questo metodo, quindi soddisfa l'interfaccia. Questo metodo sovrascrive la definizione nella sua classe padre e la sua dichiarazione nella sua interfaccia genitore.

    
risposta data 25.11.2015 - 23:35
fonte

Leggi altre domande sui tag