Programação orientada a objetos Java: classe abstrata, análise de exemplo de uso de interface

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:

  1. 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

  2. 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"

Algumas perguntas da entrevista de alta frequência coletadas no último 2020 (todas organizadas em documentos), há muitos produtos secos, incluindo mysql, netty, spring, thread, spring cloud, jvm, código-fonte, algoritmo e outras explicações detalhadas, bem como planos detalhados de aprendizagem, entrevistas, classificação de perguntas, etc. Para aqueles que precisam obter esses conteúdos, adicione Q como: 11604713672

Acho que você gosta

Origin blog.csdn.net/weixin_51495453/article/details/113898364
Recomendado
Clasificación