Como um objeto pode ter muitos tipos?

5

No momento, estou lendo Padrões de design - Elementos do software orientado a objeto reutilizável . Eu estou no capítulo 1 na página 16 na seção Classe versus herança de interface. Lá na última linha da página diz " Um objeto pode ter muitos tipos, e objetos de classes diferentes podem ter o mesmo tipo. "

Eu acho que entendi a segunda parte da frase, como objetos de classes diferentes podem ter os mesmos tipos. É possível por herança, se a classe Base e a classe derivada tiverem a mesma interface.

Minha pergunta é como pode objeto ter muitos tipos. Está tentando dizer que um objeto derivado pode ter dois tipos de base e derivados?

    
por solti 27.01.2016 / 23:30
fonte

1 resposta

8

A grande dica está na sua pergunta: "herança de interface".

Basicamente, uma interface não é nada além de um conjunto de assinaturas de métodos. Em uma linguagem OOP tradicional, a única coisa que uma classe precisa fazer para satisfazer uma interface é ter implementações dessas assinaturas de método e declarar que ela implementa a interface. Como não é herdar implementações, não há ambiguidade ou contradição em ter uma única classe implementando várias interfaces de uma só vez, ou ter várias classes implementando a mesma interface com diferentes dados ou algoritmos subjacentes.

Por exemplo, aqui está um código Java trivial que declara uma classe que implementa várias outras interfaces e, portanto, tem todos os seus tipos ao mesmo 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() {}
}
    
por 27.01.2016 / 23:49
fonte