Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Java

Java - Anulación

En el capítulo anterior, hablamos de superclases y subclases. Si una clase hereda un método de su superclase, existe la posibilidad de anular el método siempre que no esté marcado como final.

El beneficio de anular es:la capacidad de definir un comportamiento que es específico para el tipo de subclase, lo que significa que una subclase puede implementar un método de clase principal según sus requisitos.

En términos orientados a objetos, anular significa anular la funcionalidad de un método existente.

Ejemplo

Veamos un ejemplo.

Demostración en 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
   }
}

Esto producirá el siguiente resultado −

Salida

Animals can move
Dogs can walk and run

En el ejemplo anterior, puede ver que aunque b es un tipo de Animal, ejecuta el método de movimiento en la clase Perro. La razón de esto es:en tiempo de compilación, la verificación se realiza en el tipo de referencia. Sin embargo, en el tiempo de ejecución, JVM determina el tipo de objeto y ejecutaría el método que pertenece a ese objeto en particular.

Por lo tanto, en el ejemplo anterior, el programa se compilará correctamente ya que la clase Animal tiene el método move. Luego, en tiempo de ejecución, ejecuta el método específico para ese objeto.

Considere el siguiente ejemplo −

Ejemplo

Demostración en 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();
   }
}

Esto producirá el siguiente resultado −

Salida

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

Este programa arrojará un error de tiempo de compilación ya que el tipo de referencia Animal de b no tiene un método con el nombre de corteza.

Reglas para la anulación de métodos

Uso de la palabra clave super

Al invocar una versión de superclase de un método anulado, el super se utiliza la palabra clave.

Ejemplo

Demostración en 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
   }
}

Esto producirá el siguiente resultado −

Salida

Animals can move
Dogs can walk and run

Java

  1. Operadores Java
  2. Interfaz Java
  3. Prueba de Java con recursos
  4. Método String Length () en Java:cómo encontrar con el ejemplo
  5. Método Java String indexOf() con subcadena y ejemplos
  6. Método Java String charAt() con ejemplo
  7. Método Java String compareTo():​​cómo usarlo con ejemplos
  8. Método Java String contains() | Comprobar subcadena con ejemplo
  9. Java String termina con () método con ejemplo
  10. Método Java String replace(), replaceAll() y replaceFirst()
  11. Variable estática en Java:¿Qué es el bloque estático y el método? [Ejemplo]