Deixe -me dizer o conceito básico primeiro
Na linguagem Java, a classe abstrata e a interface estão dois mecanismos que suportam definições abstratas de classe. É precisamente por causa da existência desses dois mecanismos que o Java recebe poderosos recursos orientados a objetos. A classe abstrata e a interface têm grande semelhança no apoio às definições de classe abstrata e podem até ser substituídas um pelo outro. Portanto, muitos desenvolvedores parecem ter escolhas arbitrárias para classe e interface abstratas ao definir classe abstrata. De fato, ainda há uma grande diferença entre os dois. A escolha deles reflete até se a compreensão da essência da área problemática e o entendimento da intenção do design são corretos e razoáveis.
Classe e interface abstratas são usadas na linguagem Java para realizar classes abstratas (a classe abstrata deste artigo não é traduzida da classe abstrata, representa um corpo abstrato, e a classe abstrata é um método usado na linguagem Java para definir classes abstratas. Por favor, preste atenção à distinção). Então, o que é uma classe abstrata? Quais benefícios podem usar classes abstratas nos trazer?
No conceito orientado a objetos, sabemos que todos os objetos são retratados pelas classes, mas o contrário não é. Nem todas as classes são usadas para descrever objetos (classes concretizas). Se uma classe não contém informações suficientes para descrever um objeto concreto, essa classe é uma classe abstrata. As classes abstratas são frequentemente usadas para representar conceitos abstratos que obtemos na análise e criação das áreas problemáticas e são abstrações de uma série de conceitos concretos que parecem diferentes, mas essencialmente os mesmos. Por exemplo: se desenvolvermos um software de edição gráfica, descobriremos que existem conceitos específicos, como círculos e triângulos no campo Problema. Eles são diferentes, mas todos pertencem ao conceito de forma. O conceito de forma não existe no campo Problema. É um conceito abstrato. É precisamente porque os conceitos abstratos não possuem conceitos concretos correspondentes na área problemática que as classes abstratas usadas para representar conceitos abstratos não podem ser instantados.
Funções e interfaces virtuais são frequentemente usadas no desenvolvimento de Java. Qual é a diferença entre esses dois?
Resumo: Apenas uma classe pai pode ser herdada em uma subclasse
Interface: as subclasses podem implementar várias interfaces
Então, quando usar abstrato e quando usar a interface?
Quando uma subclasse e a classe pai estão em um relacionamento, por exemplo, um asiático é uma pessoa, então uma subclasse asiática pode herdar a classe pai de uma pessoa.
Quando a subclasse e a classe pai são como um relacionamento, por exemplo, um super -homem na América é como um super -homem. As habilidades do Super -Homem não são todos, então nem todos são atributos. Não podemos atribuir superpotências à classe dos pais humanos. Neste momento, podemos usar a interface
Exemplo de código:
Public Resumo Class Man {public abstrate void eat ();} interface pública Superpower {public void superpower ();} classe pública AsiAiaman estende o homem {@OverridePublic void Eat () {System.out.println ("asiáticos comem com palhaes");}}} public class AmericansPowerMowerMpowodyPlemmentsPlemments ("); Superman pode voar ");}@Substerpublic void Eat () {System.out.println (" American Eats with Knife and Fork ");}} public static void main (string [] args) {Man Anaasiaman = New Asiaman (); Americansuperman (); anasiaman.eat (); anamericansuperman.eat (); anamericansuperman.superpower ();}Resultados em execução:
Os americanos comem com faca e o Fork American Superman pode voar os asiáticos comer com pauzinhos
O uso correto de abstrato e interface é benéfico para melhorar a legibilidade do código. Quando as pessoas vêem se estender, elas saberão o que é a. Quando vêem o implemento, eles podem saber quais recursos essa classe tem como um.