Herança Java
Herança Java (Subclasse e Superclasse)
Em Java, é possível herdar atributos e métodos de uma classe para outra. Agrupamos o "conceito de herança" em duas categorias:
- subclasse (filho) - a classe que herda de outra classe
- superclasse (pai) - a classe que está sendo herdada
Para herdar de uma classe, use a palavra- extends
chave.
No exemplo abaixo, a Car
classe (subclasse) herda os atributos e métodos da Vehicle
classe (superclasse):
Exemplo
class Vehicle {
protected String brand = "Ford"; // Vehicle attribute
public void honk() { // Vehicle method
System.out.println("Tuut, tuut!");
}
}
class Car extends Vehicle {
private String modelName = "Mustang"; // Car attribute
public static void main(String[] args) {
// Create a myCar object
Car myCar = new Car();
// Call the honk() method (from the Vehicle class) on the myCar object
myCar.honk();
// Display the value of the brand attribute (from the Vehicle class) and the value of the modelName from the Car class
System.out.println(myCar.brand + " " + myCar.modelName);
}
}
Você notou o protected
modificador em Vehicle?
Definimos o atributo de marca em Vehicle para um protected
modificador de acesso . Se estiver definido como private
, a classe Carro não poderá acessá-lo.
Por que e quando usar "herança"?
- É útil para reutilização de código: reutilize atributos e métodos de uma classe existente ao criar uma nova classe.
Dica: Dê uma olhada também no próximo capítulo, Polimorfismo , que usa métodos herdados para realizar diferentes tarefas.
A palavra-chave final
Se você não quiser que outras classes herdem de uma classe, use a final
palavra-chave:
Se você tentar acessar uma final
classe, o Java irá gerar um erro:
final class Vehicle {
...
}
class Car extends Vehicle {
...
}
A saída será algo assim:
Main.java:9: error: cannot inherit from final Vehicle
class Main extends
Vehicle {
^
1 error)