O conteúdo deste artigo:
- Aula abstrata
- interface
- Semelhanças e diferenças entre classes abstratas e interfaces
Classe abstrata:
-
Embora já exista uma classe pai, às vezes a classe pai não pode descrever diretamente alguns atributos comuns. Por exemplo, mamíferos e humanos são chamados. De modo geral, a classe pai de mamíferos não define com precisão o atributo de "chamada". Obviamente, a subclasse deve decidir como "chamar", mas a propriedade de "chamar" é compartilhada, então essa propriedade pode ser abstraída (abstrato significa nenhum conteúdo específico), e a subclasse pode realizar o conteúdo específico.
-
Métodos abstratos não podem ser definidos em classes comuns, portanto, classes abstratas são definidas.
-
Como a subclasse do método abstrato deve ser reescrita, caso contrário, a execução falhará, então você pode garantir que a subclasse reescreve o método abstrato.
-
Uma classe abstrata pode ter métodos abstratos ou nenhum método abstrato (classes abstratas sem métodos abstratos) .Quando não há métodos abstratos, a herança da subclasse não precisa sobrescrever os métodos.
-
Classes abstratas não podem ser instanciadas e objetos não podem ser criados com a nova palavra-chave.
-
Somente depois que a subclasse cobre todos os métodos abstratos, a subclasse é reificada e a subclasse pode criar objetos. Se todos os métodos abstratos não forem cobertos, a subclasse ainda é uma classe abstrata.
-
Métodos abstratos devem ser definidos em classes abstratas, e todos eles precisam ser modificados por abstratos. Métodos abstratos só podem ser declarados, não podem ser definidos. Portanto, não pode haver chaves. Métodos abstratos também não podem ser finalizados.
-
Formato de definição de classe abstrata:
-
O formato de definição do método abstrato:
abstract class A{
abstract void talk();//只能声明,不能具体定义
}
class B extends A{
void talk() {
System.out.println("run in B");//子类必须重写抽象方法
}
}
public class Demo {
public static void main(String[] args) {
B b=new B();
b.talk();
}
}
interface:
-
As interfaces também são abstratas e os motivos da abstração são semelhantes aos das classes abstratas. Mas os usos são diferentes: a interface é geralmente usada para definir o comportamento uniforme da classe, enquanto a classe abstrata é "herdada".
-
A classe que reescreve todos os métodos abstratos em uma interface é chamada de implementação da interface.
-
O problema resolvido pela interface: JAVA não suporta diretamente herança múltipla, mas suporta múltiplas implementações.
-
O corpo da interface contém definições de constantes e declarações de métodos, e definições de métodos não são permitidas.
-
A interface pode ser considerada uma classe abstrata completamente abstrata.
-
A subclasse precisa cobrir todos os métodos abstratos na interface antes que possa ser instanciada, caso contrário, é uma classe abstrata.
-
Se uma classe implementa uma interface, a classe deve definir os métodos declarados na interface. Ao implementar um método, o nome do método, o tipo de retorno, o número de parâmetros e os tipos de parâmetro devem ser consistentes com a declaração da interface.
-
Na interface, o modificador do método é public abstract por padrão; o modificador da constante na interface é public static final por padrão; portanto, a subclasse deve usar public para decorar o método definido.
-
O formato de definição da interface:
-
Implementação da interface:
package 接口;
interface A{
public static final int size=100;
public abstract void talk();
// public abstract void eat();
}
class B implements A{
//实现A中的抽象方法
public void talk() {
System.out.println("B talk");
}
}
public class Demo {
public static void main(String[] args) {
new B().talk();
}
}
Nota:
-
Se uma declaração de classe implementa uma interface, mas não implementa todos os métodos da interface, então a classe deve ser uma classe abstrata
-
Se uma classe não implementa totalmente todos os métodos na interface, essa classe deve ser uma classe abstrata.
As semelhanças e diferenças entre classes abstratas e interfaces:
-
o mesmo:
- Tudo abstrato
- Não pode ser instanciado
- Pode conter métodos abstratos, esses métodos abstratos são usados para descrever as funções da classe, mas não fornecem implementação específica.
-
diferença:
- A interface é completamente abstrata
-
Diferença do projeto de conceito:
- As classes abstratas podem ter métodos não abstratos, enquanto as interfaces são completamente abstratas. Na verdade, a diferença entre elas pode ser entendida da seguinte forma: A e B são ambas classes abstratas, mas por serem "classes pai", geralmente têm propriedades específicas, pode-se dizer que uma classe abstrata é uma abstração de uma classe pai, mas é inseparável do relacionamento entre a classe pai e a subclasse; mas a interface define o comportamento, ela não tem um relacionamento pai-filho forte , é apenas completamente abstrato Define alguns comportamentos como padrões, assim como vários padrões para componentes em uma fábrica.
- Todas as variáveis e modificadores de método na interface mostram que a interface é um "padrão de comportamento aberto e fixo"