Todos los desarrolladores que trabajan con dart para el desarrollo de aplicaciones que usan el marco Flutter regularmente encuentran diferentes usos de los implementos, extensiones y palabras clave. En Dart, una clase puede heredar otra clase, es decir, Dart puede crear una nueva clase a partir de una clase existente. Hacemos uso de palabras clave para hacerlo. En este artículo, analizaremos 3 de las palabras clave utilizadas para el mismo propósito y las compararemos, a saber:
- extiende
- con
- implementos
Echemos un vistazo a ellos uno a la vez.
extiende
En Dart, la palabra clave extends se usa típicamente para alterar el comportamiento de una clase usando Herencia. La capacidad de una clase para derivar propiedades y características de otra clase se denomina herencia . Es la capacidad de un programa para crear una nueva clase a partir de una clase existente. En palabras más simples, podemos decir que usamos extends para crear una subclase y super para referirnos a la superclase. La clase cuyas propiedades son heredadas por la clase secundaria se llama Clase principal . La clase principal también se conoce como clase base o superclase . La clase que hereda propiedades de otra clase se denomina clase secundaria . La clase secundaria también se conoce como clase derivada, clase heredera o subclase.La palabra clave extends es la herencia típica de la clase OOP. Si la clase Second extiende la clase First, todas las propiedades, variables y métodos implementados en la clase First también están disponibles en la clase Second. Además, puede anular métodos.
Usa extender si desea crear una versión más específica de una clase. Por ejemplo, si Apple se extiende desde la clase Fruit, significa que todas las propiedades, variables y funciones definidas en la clase Fruit estarán disponibles en la clase Apple.
Ejemplo:
A continuación podemos ver un ejemplo de implementación de la palabra clave extends. No estamos obligados a anular la definición de la clase heredada y podemos usar la definición existente en la clase secundaria.
Dart
// Class with name First class First { static int num = 1; void firstFunc(){ print('hello'); } } // inherits from First class class Second extends First{ // No need to override } void main(){ // instance of First Class var one = First(); // calling firstFunc() one.firstFunc(); // printing static variable of class print(First.num); // instance of Second Class var second = Second(); // calling firstFunc() that // has been inherited second.firstFunc(); }
Salida :
hello 1 hello
implementos
Las interfaces definen un conjunto de métodos disponibles en un objeto. Dart no tiene una sintaxis para declarar interfaces. Las declaraciones de clase son en sí mismas interfaces en Dart. Una interfaz es algo que obliga a la clase derivada a implementar una lista establecida de campos y métodos públicos.
La palabra clave implement se utiliza para implementar una interfaz forzando la redefinición de las funciones.
Cada clase define implícitamente una interfaz que contiene todos los miembros de instancia de la clase y de cualquier interfaz que implemente. Si desea crear una clase A que admita la API de la clase B sin heredar la implementación de B, la clase A debe implementar la interfaz B. Una clase implementa una o más interfaces declarándolas en una cláusula implements y luego proporcionando las API requeridas por las interfaces.
Ejemplo:
Dart
// Class with name First class First { // function to print "hello" void firstFunc(){ print('hello'); } } // We inherit the propertied // of implemented class class Second implements First{ // by overriding the functions // in implemented class @override void firstFunc(){ print('We had to declare the methods of implemented class'); } } void main(){ // instance of First Class var one = First(); // calling firstFunc() one.firstFunc(); // instance of Second Class var second = Second(); // calling firstFunc() that // has been inherited second.firstFunc(); }
Producción:
hello We had to declare the methods of implemented class
con
Los mixins son una forma de reutilizar los métodos de una clase en varias jerarquías de clases. Los mixins pueden entenderse como clases abstractas utilizadas para reutilizar los métodos en varias clases que tienen funciones/atributos similares. Los mixins son una forma de abstraer y reutilizar una familia de operaciones y estados. Es similar a la reutilización que se obtiene al extender una clase, pero no se trata de herencias múltiples. Todavía solo existe una superclase.
With se usa para incluir Mixins . Un mixin es un tipo diferente de estructura, que solo se puede usar con la palabra clave with .
Mixin es un tipo diferente de estructura, que solo se puede usar con la palabra clave with . En Dart, una clase puede desempeñar el papel de mixin si la clase no tiene un constructor. También es importante tener en cuenta que un mixin no fuerza una restricción de tipo ni impone restricciones de uso en los métodos de clase.
Ejemplo:
Dart
// mixin with name First mixin First { void firstFunc(){ print('hello'); } } // mixin with name temp mixin temp { void number(){ print(10); } } // mixin type used with keyword class Second with First, temp{ @override void firstFunc(){ print('can override if needed'); } } void main(){ var second = Second(); second.firstFunc(); second.number(); }
Producción:
can override if needed 10
Publicación traducida automáticamente
Artículo escrito por dhruv_tewari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA