/ Elementos do modelo de objeto Java: classe abstrata, interface

Elementos do modelo de objeto Java: classe abstrata, interface

A idéia principal da classe abstrata está na seguinte tese: às vezes não são necessárias classes prontas, mas de uma forma "bruta". Esses espaços em branco não podem ser usados ​​diretamente (criar instâncias).

classe abstrata de java

Qual é a classe abstrata em Java?

Vamos considerar outro exemplo. Há em Java uma classe abstrata do Calendário no pacote Java.util. Ele não implementa um calendário específico que é usado, por exemplo, na Europa Ocidental e Oriental, China, Coréia do Norte, Tailândia, etc. Mas tem muitas funções úteis, por exemplo, adicionando alguns dias a uma data específica: essas funções são necessárias para qualquer implementação do calendário. Você não pode gerar uma instância de uma classe abstrata.

Classes abstratas, métodos abstratos Java

Vamos dizer que você precisa desenvolver vários gráficoselementos, por exemplo, figuras geométricas: um círculo, um retângulo, uma estrela, etc. E há um recipiente que os desenha. Cada componente tem uma aparência diferente, então o método correspondente (seja chamado de pintura) é implementado de forma diferente. No entanto, cada componente tem muitos recursos comuns: as figuras devem estar inscritas em um retângulo, podem ter uma cor, ser visíveis e invisíveis etc. Isto é, você precisa criar uma classe pai para todas essas formas, onde cada componente herdará propriedades comuns.

classes abstratas métodos abstratos java
Mas e o método da pintura? Afinal, a classe pai não possui representação visual. Se você declarar o método de pintura em cada classe de forma independente, precisará analisar qual componente está sendo processado e, em seguida, converter o tipo. Portanto, o método deve ser declarado abstrato na classe pai: configure o cabeçalho do método sem o corpo. E cada classe derivada descreverá seu corpo. Em Java, uma classe abstrata pode encapsular métodos abstratos.

Se uma classe tiver métodos abstratos, entãoa aula é abstrata. Antes da palavra class colocar a palavra-chave abstract, no cabeçalho do método - também. Após a cabeça deste método, você precisa colocar um ponto e vírgula. Em Java, uma classe abstrata não pode gerar instâncias. Se quisermos proibir sua criação, mesmo que a classe não tenha métodos abstratos, a classe pode ser declarada abstrata. Mas se uma classe tiver pelo menos um método abstrato, a classe deve ser abstrata. É impossível que a classe seja abstrata, final e método também. O método não pode ser abstrato, privado, estático, nativo. Para que as classes herdeiro sejam declaradas como não-abstratas e criem suas instâncias, elas devem implementar todos os métodos abstratos do pai. A classe em si pode usar seus métodos abstratos.

Exemplo:

  • classe abstrata AClass {
  • método público abstrato vazio (int a);
  • }
  • classe BClass estende AClass {
  • public void method (int a) {
  • // body
  • }

Variáveis ​​do tipo de classe abstrata são permitidas. Eles podem referenciar o descendente não abstrato desta classe ou ser nulo.

Interfaces em Java - uma alternativa para múltiplas heranças

interfaces java e classes abstratas

Em Java, não há herança múltipla, porque então surgem certos problemas. Uma classe não pode herdar de várias classes. Mas então ele pode implementar várias interfaces.

Interfaces e classes abstratas de Java - conceitossemelhante mas não é o mesmo. A interface pode ser declarada como pública, então é acessível a todos ou o modificador público pode ser omitido, então a interface está disponível apenas dentro de seu pacote. A palavra-chave abstract não é necessária, pois a interface já é abstrata, mas pode ser especificada.

Declaração de interface

diferença de classe abstrata da interface java

Começa com uma manchete e pode ir primeiroa palavra-chave public, depois a palavra interface. Então pode haver a palavra extends e a enumeração das interfaces das quais o dado é herdado. Aqui as repetições não são permitidas, e também é impossível que o relacionamento de herança forme uma dependência cíclica. Em seguida, vem o corpo da interface entre chaves. Os seguintes elementos são declarados no corpo da interface: campos constantes e métodos abstratos. Todos os campos são estáticos finais públicos - todos esses modificadores são opcionais. Todos os métodos são considerados abstratos públicos - esses modificadores também podem ser especificados. Agora é dito o suficiente sobre a diferença entre uma classe abstrata e uma interface Java.

  • IA de interface pública estende B, C, D {
  • // body
  • }

Para declarar uma classe como um herdeiro de interface, você deve usar a palavra-chave implements:

  • classe AClass implementa BI, CI, DI {}

Ou seja, se um nome de interface é especificado na declaração de classe após os implementos, a classe o implementa. Os herdeiros dessa classe obtêm seus elementos, então eles também a implementam.

Variáveis ​​de tipo de interface também são permitidas. Eles podem se referir ao tipo da classe que implementa essa interface, ou null. Essas variáveis ​​possuem todos os elementos da classe Object, porque os objetos são gerados a partir de classes, e esses, por sua vez, são herdados da classe Object.

Neste artigo, examinamos alguns dos elementos do modelo de objeto Java - classes abstratas, métodos abstratos e interfaces.

Leia mais: