Come può un oggetto avere molti tipi?

5

Attualmente sto leggendo Modelli di progettazione - Elementi del software orientato agli oggetti riutilizzabile . Sono nel capitolo 1 a pagina 16 nella sezione Class Versus Interface Ereditarietà. Lì nell'ultima riga della pagina si dice " Un oggetto può avere molti tipi e oggetti di classi diverse possono avere lo stesso tipo. "

Penso di capire la seconda parte della frase, come gli oggetti di classi diverse possono avere gli stessi tipi. È possibile per ereditarietà, se la classe base e la classe derivata hanno la stessa interfaccia.

La mia domanda è come possono gli oggetti avere molti tipi. Sta cercando di dire che un oggetto derivato può avere due tipi di base e derivati?

    
posta solti 27.01.2016 - 23:30
fonte

1 risposta

8

Il grande suggerimento è nella tua domanda: "ereditarietà dell'interfaccia".

In sostanza, un'interfaccia non è altro che un insieme di firme del metodo. In un linguaggio OOP tradizionale, l'unica cosa che una classe deve fare per soddisfare un'interfaccia è avere implementazioni di tali firme di metodo e dichiarare che implementa l'interfaccia. Dal momento che non eredita le implementazioni, non c'è alcuna ambiguità o contraddizione nell'avere una singola classe implementare più interfacce contemporaneamente, o avere diverse classi implementare la stessa interfaccia con diversi dati o algoritmi sottostanti.

Ad esempio, ecco un codice Java banale che dichiara una classe che implementa diverse altre interfacce e quindi ha tutti i tipi allo stesso tempo:

public interface A { void a(); }
public interface B { void b(); }
public interface C { void c(); }
public interface D { void d(); }

public class IAmManyTypes implements A, B, C, D {
  public void a() {}
  public void b() {}
  public void c() {}
  public void d() {}
}
    
risposta data 27.01.2016 - 23:49
fonte

Leggi altre domande sui tag