Este artigo descreve o uso de interfaces e classes abstratas em Java. Compartilhe -o para sua referência, como segue:
No conceito orientado a objetos, sabemos que todos os objetos são retratados por classes, mas nem todas as classes são usadas para descrever objetos. 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 do campo Problema. São abstrações de uma série de conceitos concretos que parecem diferentes, mas são essencialmente os mesmos. Não podemos instanciá -los (não podemos criar uma coisa concreta), então os chamamos de abstrações.
Por exemplo: quando queremos descrever "frutas", é uma abstração. Possui algumas características comuns, como massa e volume (as frutas têm massa), mas carece de características (maçãs e laranjas são frutas e têm suas próprias características). Não podemos criar a única coisa que pode representar frutas (porque maçãs e laranjas não podem representar frutas). Classes abstratas podem ser usadas para descrevê -lo, para que classes abstratas não possam ser instanciadas. Quando usamos uma determinada classe para descrever "maçãs", essa classe pode herdar a classe abstrata que descreve "frutas". Todos sabemos que "maçãs" são uma espécie de "fruta".
No campo orientado a objetos, as classes abstratas são usadas principalmente para esconder-se do tipo. Podemos construir uma descrição abstrata fixa de um conjunto de comportamentos, mas esse conjunto de comportamentos pode ter possíveis métodos de implementação concreta. Esta descrição abstrata é uma classe abstrata, e esse conjunto de possíveis implementações de concreto se manifesta como todas as classes derivadas desta classe abstrata.
Todos os métodos abstratos em interfaces e classes abstratas não podem ser implementadas em implementações concretas, mas devem implementar todos os métodos abstratos em suas subclasses (devem ter um corpo de função, mesmo que esteja vazio em {}). Os designers de Java podem considerar a flexibilidade dos métodos abstratos, e cada subclasse pode implementar métodos abstratos de acordo com suas próprias necessidades.
A definição de classe abstrata é a seguinte:
classe abstrata public abstractclass // Há pelo menos um método abstrato em ele {public int t; // MEMBRO DE DADOS ORDINÁRIO Public Resumo Void Method1 (); // Método abstrato, subclasses da classe abstrata deve implementar métodos abstratos na classe abstrata na classe Public Resumo Void Method2 (); Public void Method3 (); // Método não abstract public int method4 (); public int method4 () {... // classe abstrata pode receber o comportamento padrão dos métodos de métodos não abstratos, ou seja, a implementação concreta do método} public void Method3 () {... // Classe de abstração pode ser atribuída o comportamento padrão dos métodos não abstratos, ou seja, a implementação do concreto do método}}}}A definição de uma interface é a seguinte:
interface pública interface interface {static final int i; // Não pode haver membros de dados comuns na interface, apenas membros de dados estáticos que não podem ser modificados. Estático significa que os meios finais globais não podem ser modificados. Pode ser modificado sem modificação final estática e será declarado implicitamente como estático e final do método de vazio público1 (); // Os métodos na interface devem ser métodos abstratos, portanto, o Método Public void2 () não precisa de modificação abstrata; // O comportamento padrão dos métodos não pode ser atribuído à interface, ou seja, não pode haver uma implementação específica do método}Em resumo, as classes abstratas são classes incompletas e interfaces são apenas coleções de declarações de métodos abstratos e dados estáticos que não podem ser modificados, nenhum dos quais pode ser instanciado.
Em certo sentido, uma interface é uma forma especial de classe abstrata. Na língua Java, as classes abstratas representam uma relação de herança. Uma classe pode herdar apenas uma classe abstrata, enquanto uma classe pode implementar várias interfaces. Em muitos casos, as interfaces podem realmente substituir classes abstratas, se você não precisar expressar deliberadamente a herança nos atributos.
Para entender melhor, para os fins de Java introduzir classes e interfaces abstratas, as respostas que recebi de especialistas são as seguintes:
1. Da perspectiva da hierarquia de classes, as classes abstratas estão no topo do nível, mas no design real, as classes abstratas geralmente devem aparecer posteriormente. Por que? De fato, a aquisição de classes abstratas é um pouco como extrair fatores comuns em matemática: ax+bx, x é uma classe abstrata. Se você não tem a fórmula anterior, como você sabe se X é um fator comum? Nesse sentido, também está de acordo com o processo de compreensão do mundo das pessoas, primeiro concreto e depois abstrato. Portanto, se você obtiver muitos conceitos específicos e encontrar pontos em comum no processo de design, deve ser verdade que essa coleção de pontos em comum é uma classe abstrata.
2. Na superfície, a interface é muito semelhante às classes abstratas, mas seu uso é completamente diferente. Sua função básica é reunir algumas classes (conceitos) irrelevantes para formar uma nova "nova classe" operável centralmente. Um exemplo típico que dou aos alunos é "motorista". Quem pode ser um motorista? Qualquer um pode fazer isso, desde que você obtenha sua carteira de motorista. Portanto, não me importo se você é um estudante, um trabalhador de colarinho branco, um trabalhador de colarinho azul ou um chefe, desde que você tenha uma carteira de motorista, você é um motorista.
interface driverlicence {licencie getlicence (); } classe StudentDriver estende os implementos do aluno DriverLicence {} classe whtiecollaremployeedriver estende o whtiecollaremployeeeeelem implementa DriverLicence {} classe BluecolLaremployEedriver estende a Bluecollaremployee implementa drivernce {} Bossriver da classe Boss.Quando eu defino a classe "carro", posso especificar o "driver".
Class Car {SetDriver (DriverLicence Driver);}Neste momento, o objeto do carro não se importava com o que o motorista fazia. O único ponto comum era que eles obtiveram uma carteira de motorista (ambos implementaram a interface DriverLicence). Esta deve ser a parte mais poderosa da interface e é incomparável para as classes abstratas.
Resumir:
As classes abstratas extraem fatores comuns de classes de concreto, enquanto as interfaces devem "hash" algumas classes não relacionadas em um grupo comum. Geralmente, desenvolvemos um bom hábito de usar várias interfaces. Afinal, o Java é uma herança única, diferentemente do C ++, mas deve ser usada ao usar classes abstratas (um pouco semelhante ao Goto), haha.
Espero que este artigo seja útil para a programação Java de todos.