Article image
Lucas Souza
Lucas Souza08/08/2024 17:23
Compartilhe

Entendendo a Relação 'IS-A' e 'HAS-A' em Java: Quando Usar Herança ou Composição?

    O que são IS-A?

    IS-A é quando uma classe "é" um tipo de outra classe. Por exemplo, um gato é um animal. No código, a classe Cat herda de Animal, porque um gato "é um" animal. Isso é conhecido como herança.

    class Animal {
      void makeSound() {
          System.out.println("Animal sound");
      }
    }
    
    class Cat extends Animal {
      void meow() {
          System.out.println("Meow!");
      }
    }
    

    Aqui, Cat é um Animal, então ele herda as coisas que um animal pode fazer.

    O que são HAS-A?

    HAS-A é quando uma classe "tem" outra classe como parte dela. Por exemplo, uma bicicleta tem rodas. No código, isso é chamado de composição.

    class Wheel {
      void rotate() {
          System.out.println("Wheel rotating...");
      }
    }
    
    class Bicycle {
      private Wheel wheel = new Wheel();
    
      void ride() {
          wheel.rotate();
          System.out.println("Bicycle moving!");
      }
    }
    

    Aqui, uma Bicycle tem Wheel, ou seja, a bicicleta "tem" uma roda.

    Quando usar IS-A e HAS-A?

    Use IS-A quando você quer que uma classe herde características de outra. Tipo, um passarinho que herda características de um animal.

    HAS-A é mais legal quando você está juntando partes para formar um todo, como um carro que "tem" um motor e outras partes.

    // IS-A
    class Bird extends Animal {
      void fly() {
          System.out.println("Flying high!");
      }
    }
    
    // HAS-A
    class Computer {
      private Processor processor = new Processor();
    }
    

    Se a coisa "é uma" outra coisa, use IS-A. Se a coisa "tem uma" outra coisa, use HAS-A.

    Quando Usar Herança ou Composição?

    Agora que você já manja das diferenças entre IS-A e HAS-A, a parada é entender quando usar cada um. Se você quer aproveitar e compartilhar o comportamento de várias classes, vai de herança (IS-A). Mas se quer juntar diferentes partes para criar algo novo, tipo um robô que tem braços e pernas, vai de composição (HAS-A). Saber essa diferença vai te ajudar a escrever códigos mais limpos e organizados, sem bagunça!

    Conclusão

    Curtiu o conteúdo? Ele foi gerado por inteligência artificial, mas foi revisado por alguém 100% Humano, me siga no Linkedin.

    Fontes de produção

    Ilustrações de capa: geradas por chatGPT

    Conteúdo gerado por: chatGPT e revisões humanas

    #JavaProgramming #BackendDev #CodingTips

    Compartilhe
    Comentários (0)