Classes abstratas e interfaces Semelhanças: (1) pode ser herdado (2) não pode ser instanciado (3) pode conter declarações de método (4) A classe derivada deve implementar o método não implementado Categoria: (1) Classes base abstratas podem definir campos, propriedades e implementações de métodos. Interfaces só podem definir atributos, indexadores, eventos e declarações de métodos, e não podem conter campos. (2) Uma classe abstrata é uma classe incompleta que precisa de mais refinamento, enquanto uma interface é uma norma comportamental. As interfaces personalizadas da Microsoft sempre vêm com um campo capaz de provar que são expressões do "Eu consigo..." ” (3) Interfaces podem ser implementadas várias vezes, e classes abstratas só podem ser herdadas por uma única pessoa (4) Classes abstratas são mais definidas entre uma série de classes intimamente relacionadas, enquanto a maioria das interfaces são classes vagamente relacionadas que implementam uma certa função (5) Classes abstratas são conceitos abstratos de uma série de objetos relacionados, então refletem a comunalidade interna das coisas; Uma interface é uma convenção funcional definida para satisfazer chamadas externas, então reflete as características externas das coisas (6) A interface basicamente não possui características específicas de herança, ela apenas promete métodos que podem ser chamados (7) Interfaces podem ser usadas para suportar callbacks, mas a herança não possui esse recurso (8) Os métodos específicos implementados por classes abstratas são virtuais por padrão, mas os métodos de interface na classe que implementam a interface são não virtuais por padrão, claro, você também pode declará-los virtuais (9) Se uma classe abstrata implementar uma interface, o método na interface pode ser mapeado para a classe abstrata como um método abstrato sem precisar implementá-lo, e o método na interface pode ser implementado em uma subclasse da classe abstrata
|