Anulación de métodos en Dart

La anulación de métodos ocurre en dart cuando una clase secundaria intenta anular el método de la clase principal. Cuando una clase secundaria amplía una clase principal, obtiene acceso completo a los métodos de la clase principal y, por lo tanto, anula los métodos de la clase principal. Se logra redefiniendo el mismo método presente en la clase padre.

Este método es útil cuando tiene que realizar diferentes funciones para una clase secundaria diferente, por lo que simplemente podemos redefinir el contenido anulándolo.

Puntos importantes: 

  1. Un método puede anularse solo en la clase secundaria, no en la clase principal en sí.
  2. Tanto los métodos definidos en la clase secundaria como la principal deben ser la copia exacta, desde el nombre hasta la lista de argumentos, excepto el contenido presente dentro del método, es decir, puede y no puede ser el mismo.
  3. Un método declarado final o estático dentro de la clase principal no puede ser anulado por la clase secundaria.
  4. Los constructores de la clase principal no se pueden heredar, por lo que la clase secundaria no los puede anular.

Ejemplo 1: caso simple de anulación de método. 
 

Dart

// Dart Program to illustrate the 
// method overriding concept
class SuperGeek {
    
  // Creating a method
  void show(){
    print("This is class SuperGeek.");
  }
}
   
class SubGeek extends SuperGeek {
    
  // Overriding show method
  void show(){
    print("This is class SubGeek child of SuperGeek.");
  }
}
   
void main() {
  // Creating objects
  //of both the classes
  SuperGeek geek1 = new SuperGeek();
  SubGeek geek2 = new SubGeek();
    
  // Calling same function
  // from both the classes
  // object to show method overriding
  geek1.show();
  geek2.show();
}

 

Producción: 

This is class SuperGeek.
This is class SubGeek child of SuperGeek.

Ejemplo 2: Cuando hay más de una clase secundaria. 
 

Dart

// Dart Program to illustrate the 
// method overriding concept
  
class SuperGeek {
    
  // Creating a method
  void show(){
    print("This is class SuperGeek.");
  }
}
   
class SubGeek1 extends SuperGeek {
    
  // Overriding show method
  void show(){
    print("This is class SubGeek1 child of SuperGeek.");
  }
}
   
class SubGeek2 extends SuperGeek {
  // Overriding show method
   
  void show(){
    print("This is class SubGeek2 child of SuperGeek.");
  }
}
  
void main() {
    
  // Creating objects of both the classes
  SuperGeek geek1 = new SuperGeek();
  SubGeek1 geek2 = new SubGeek1();
  SubGeek2 geek3 = new SubGeek2();
    
  // Calling same function
  // from both the classes
  // object to show method 
  // overriding
  geek1.show();
  geek2.show();
  geek3.show();
}

 

Producción: 

This is class SuperGeek.
This is class SubGeek1 child of SuperGeek.
This is class SubGeek2 child of SuperGeek.

Publicación traducida automáticamente

Artículo escrito por somsagar2019 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *