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

Java - substituindo


No capítulo anterior, falamos sobre superclasses e subclasses. Se uma classe herdar um método de sua superclasse, há uma chance de substituir o método, desde que não seja marcado como final.

O benefício da substituição é:capacidade de definir um comportamento específico para o tipo de subclasse, o que significa que uma subclasse pode implementar um método de classe pai com base em seu requisito.

Em termos de orientação a objetos, substituir significa substituir a funcionalidade de um método existente.

Exemplo


Vamos ver um exemplo.
Demonstração ao vivo
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal();   // Animal reference and object
      Animal b = new Dog();   // Animal reference but Dog object

      a.move();   // runs the method in Animal class
      b.move();   // runs the method in Dog class
   }
}

Isso produzirá o seguinte resultado -

Saída

Animals can move
Dogs can walk and run

No exemplo acima, você pode ver que, embora b é um tipo de Animal que executa o método move na classe Dog. A razão para isso é:Em tempo de compilação, a verificação é feita no tipo de referência. No entanto, no tempo de execução, a JVM descobre o tipo de objeto e executa o método que pertence a esse objeto específico.

Portanto, no exemplo acima, o programa irá compilar corretamente, pois a classe Animal possui o método move. Então, em tempo de execução, ele executa o método específico para aquele objeto.

Considere o seguinte exemplo -

Exemplo

Demonstração ao vivo
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      System.out.println("Dogs can walk and run");
   }
   public void bark() {
      System.out.println("Dogs can bark");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal a = new Animal();   // Animal reference and object
      Animal b = new Dog();   // Animal reference but Dog object

      a.move();   // runs the method in Animal class
      b.move();   // runs the method in Dog class
      b.bark();
   }
}

Isso produzirá o seguinte resultado -

Saída

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

Este programa lançará um erro de tempo de compilação, pois o tipo de referência de b Animal não possui um método chamado bark.

Regras para substituição de método

Usando a superpalavra-chave


Ao invocar uma versão de superclasse de um método substituído, a super palavra-chave é usada.

Exemplo

Demonstração ao vivo
class Animal {
   public void move() {
      System.out.println("Animals can move");
   }
}

class Dog extends Animal {
   public void move() {
      super.move();   // invokes the super class method
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog {

   public static void main(String args[]) {
      Animal b = new Dog();   // Animal reference but Dog object
      b.move();   // runs the method in Dog class
   }
}

Isso produzirá o seguinte resultado -

Saída

Animals can move
Dogs can walk and run

Java

  1. Operadores Java
  2. Interface Java
  3. Método String Length () em Java:como encontrar com exemplo
  4. Método Java String indexOf() com substring e exemplos
  5. Método Java String charAt() com exemplo
  6. Método Java String compareTo():​​como usar com exemplos
  7. String Java contém() Método | Verificar substring com exemplo
  8. Java String EndsWith() Método com Exemplo
  9. Java String replace(), replaceAll() e método replaceFirst()
  10. Variável estática em Java:o que é bloco e método estático [exemplo]