Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Sobrescrita de Métodos em Java: Personalizando Comportamento da Superclasse

No capítulo anterior, falamos sobre superclasses e subclasses. Se uma classe herda um método de sua superclasse, há a chance de sobrescrever (override) o método, desde que não seja marcado final.

O benefício da sobrescrita: capacidade de definir comportamento específico ao tipo da subclasse, ou seja, a subclasse implementa método da superclasse conforme sua necessidade.

Em termos orientados a objetos, sobrescrever significa substituir a funcionalidade de um método existente.

Exemplo Básico

class Animal {
    public void move() {
        System.out.println("Animais podem se mover");
    }
}

class Dog extends Animal {
    public void move() {
        System.out.println("Cães podem andar e correr");
    }
}

public class TestDog {
    public static void main(String args[]) {
        Animal a = new Animal(); // referência e objeto Animal
        Animal b = new Dog();    // referência Animal, objeto Dog
        a.move(); // executa método da classe Animal
        b.move(); // executa método da classe Dog
    }
}

Saída:

Animais podem se mover
Cães podem andar e correr

Mesmo b sendo tipo Animal, executa o método move de Dog. Em tempo de compilação, verifica-se o tipo da referência. Em tempo de execução, a JVM descobre o tipo do objeto e executa o método pertencente a esse objeto.

Exemplo: Método Adicional na Subclasse

class Animal {
    public void move() {
        System.out.println("Animais podem se mover");
    }
}

class Dog extends Animal {
    public void move() {
        System.out.println("Cães podem andar e correr");
    }
    public void bark() {
        System.out.println("Cães podem latir");
    }
}

public class TestDog {
    public static void main(String args[]) {
        Animal a = new Animal();
        Animal b = new Dog();
        a.move();
        b.move();
        b.bark(); // ERRO DE COMPILAÇÃO
    }
}

Erro:

TestDog.java:26: error: cannot find symbol
b.bark();
^
symbol: method bark()
location: variable b of type Animal
1 error

Erro em tempo de compilação pois tipo de referência Animal não tem método bark.

Regras para Sobrescrita de Métodos

Usando a Palavra-chave super

Ao invocar a versão da superclasse de um método sobrescrito, usa-se super.

Exemplo

class Animal {
    public void move() {
        System.out.println("Animais podem se mover");
    }
}

class Dog extends Animal {
    public void move() {
        super.move(); // invoca método da superclasse
        System.out.println("Cães podem andar e correr");
    }
}

public class TestDog {
    public static void main(String args[]) {
        Animal b = new Dog();
        b.move();
    }
}

Saída:

Animais podem se mover
Cães podem andar e correr

Java

  1. Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
  2. Dominando Interfaces em Java: Conceitos, Implementação e Boas Práticas
  3. Método Java String length(): Como Obter o Tamanho de uma String (Exemplo)
  4. Dominando Java String.indexOf(): Localizando Substrings e Exemplos Práticos
  5. Entendendo Java String.charAt(): Sintaxe, Tipo de Retorno, Exceções e Exemplo Prático
  6. Dominando o Método compareTo() do Java String: Sintaxe, Casos de Uso e Exemplos Práticos
  7. Método Java String.contains(): Como Verificar Substrings – Exemplos Práticos
  8. Dominando Java String.endsWith(): Como Verificar Sufixos de String com Exemplos
  9. Dominando Substituição de Strings em Java: replace(), replaceAll() e replaceFirst() Explicados
  10. Java Static Explicado: Variáveis, Métodos e Blocos – Exemplos Práticos