Orientação a Objetos é fundamental para escrever código organizado, reutilizável e fácil de manter. Vamos explorar os pilares da OOP: Encapsulamento, Herança e Polimorfismo, usando exemplos práticos do universo Naruto! 🥷
Esconde os detalhes internos do objeto e expõe apenas o necessário, controlando o acesso via modificadores como private
, protected
e public
.
// Exemplo de Encapsulamento com Ninja
public class Ninja {
private String nome;
private int nivelChakra;
public Ninja(String nome, int nivelChakraInicial) {
this.nome = nome;
this.nivelChakra = nivelChakraInicial;
}
public void treinar(int horas) {
if (horas > 0) {
nivelChakra += horas * 10; // Cada hora de treino aumenta o chakra
}
}
public int getNivelChakra() {
return nivelChakra;
}
public String getNome() {
return nome;
}
}
Permite que uma classe herde atributos e métodos de outra, facilitando a reutilização de código e a criação de hierarquias.
// Exemplo de Herança com Ninjas
class Ninja {
private String nome;
public Ninja(String nome) {
this.nome = nome;
}
public void atacar() {
System.out.println(nome + " realiza um ataque básico!");
}
public String getNome() {
return nome;
}
}
class NinjaDeTaijutsu extends Ninja {
public NinjaDeTaijutsu(String nome) {
super(nome);
}
@Override
public void atacar() {
System.out.println(getNome() + " realiza um poderoso golpe de Taijutsu!");
}
}
class NinjaDeNinjutsu extends Ninja {
public NinjaDeNinjutsu(String nome) {
super(nome);
}
@Override
public void atacar() {
System.out.println(getNome() + " lança um Jutsu impressionante!");
}
}
Permite que objetos de subclasses sejam tratados como objetos da superclasse, chamando o método correto em tempo de execução.
// Exemplo de Polimorfismo no Campo de Batalha
public class CampoDeBatalha {
public static void main(String[] args) {
Ninja naruto = new NinjaDeNinjutsu("Naruto");
Ninja rockLee = new NinjaDeTaijutsu("Rock Lee");
realizarAtaque(naruto); // Naruto lança um Jutsu impressionante!
realizarAtaque(rockLee); // Rock Lee realiza um poderoso golpe de Taijutsu!
}
public static void realizarAtaque(Ninja ninja) {
ninja.atacar(); // Método chamado de forma polimórfica
}
}