image

Bootcamps ilimitados + curso de inglês para sempre

80
%OFF
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?

  • #Java

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
Recomendados para você
Deal - Spring Boot e Angular (17+)
Cognizant - Arquitetura com Spring Boot e Cloud
Claro - Java com Spring Boot
Comentários (0)