Trabalhando com Classes relacionadas em Java

Muitas das classes que você verá em Java criaram objetos que estão por conta própria. No entanto, o verdadeiro poder da programação orientada a objetos reside na sua capacidade para criar classes que descrevem os objetos que estão intimamente relacionados entre si.

Por exemplo, bolas são semelhantes aos softballs- ambos são tipos específicos de bolas. Cada um tem um diâmetro e um peso tanto pode ser jogado, travado, ou bater. No entanto, eles têm características diferentes que fazem com que se comportam de forma diferente.

Se você está criando um programa que simula a forma como as bolas de beisebol e softball trabalho, você precisa de uma forma de representar estes dois tipos de bolas. Uma opção é criar classes separadas para representar cada tipo de bola. Essas classes são semelhantes, assim você só pode copiar a maioria do código de uma classe para a outra.

Outra opção é usar uma única classe para representar os dois tipos de esferas. Em seguida, você passar um parâmetro para o construtor para indicar se uma instância da classe se comporta como uma bola de beisebol ou como um softball.

Java tem duas características de programação orientada a objetos que são projetados especificamente para lidar com as classes que estão relacionadas como este: herança e interfaces.

Herança

Herança é uma técnica de programação orientada a objetos que permite usar uma classe como a base para outra. A classe existente é chamado de classe base, superclasse, ou aula pai a nova classe que é derivado dele é chamado de classe derivada, subclasse, ou classe filha.

Quando você cria uma subclasse, a subclasse é dada automaticamente todos os métodos e campos definidos por sua superclasse. Você pode usar esses métodos e campos como está, ou pode substituir-los a alterar o seu comportamento. Além disso, você pode adicionar métodos e campos que definem dados e comportamento que é único para a subclasse.

Você poderia usar a herança para resolver o problema de beisebol / softbol, ​​criando uma classe chamada Bola que fornece as características básicas de todos os tipos de bolas e depois usá-lo como a classe base para classes separadas nomeadas BaseBall e softball. Então, essas classes podem substituir os métodos que precisam se comportar de maneira diferente para cada tipo de bola.

Uma maneira de pensar de herança é como uma forma de implementar é-um-tipo de relacionamentos. Por exemplo, uma bola de beisebol é um tipo de bola, como é uma bola de basebol. Assim, a herança é uma forma adequada para implementar essas classes relacionadas.

Interfaces

A interface é um conjunto nomeado de método e de campo declarações públicas. Observe que a interface em si não fornece qualquer código para implementar esses métodos. Em vez disso, ele apenas fornece as declarações. Em seguida, uma classe que implementos a interface fornece código para cada um dos métodos da interface define.

Você pode usar uma interface para resolver o problema de beisebol / softbol, ​​criando uma interface chamada Bola que especifica todos os métodos e campos que uma bola deve ter. Em seguida, você pode criar o softball e BaseBall aulas de modo que ambos implementam a Bola interface.

Interfaces estão intimamente relacionadas com a herança, mas tem duas diferenças fundamentais:

  • A própria interface não fornece código que implementa qualquer um de seus métodos. Uma interface é apenas um conjunto de métodos e de campo assinaturas. Em contraste, uma classe de base pode proporcionar a aplicação de alguns ou de todos os seus métodos.
  • Uma classe pode ter apenas uma classe base. No entanto, uma classe pode implementar tantas interfaces de, se necessário.

menu