Variables de instancia
Parte de la sección Programación Orientada a Objetos del Journey de Dart de Coddy — lección 7 de 110.
Las variables de instancia son variables declaradas dentro de una clase. Cada objeto creado a partir de la clase obtiene su propia copia de estas variables, de forma independiente a todos los demás objetos.
Declara variables de instancia con un tipo y un valor predeterminado opcional:
class Student {
String school = 'Dart Academy'; // tiene un valor predeterminado
String name = ''; // valor predeterminado vacío
int age = 0; // valor predeterminado cero
}Las variables con valores predeterminados comienzan con el mismo valor para cada objeto nuevo. Variables como name y age comienzan vacías o en cero hasta que las establezcas.
Usa un método con this para establecer los datos individuales del objeto:
class Student {
String school = 'Dart Academy';
String name = '';
int age = 0;
void setInfo(String name, int age) {
this.name = name; // this.name = variable de instancia
this.age = age; // this.age = variable de instancia
}
}Crea estudiantes y asigna sus datos:
Student student1 = Student();
Student student2 = Student();
student1.setInfo('Alice', 20);
student2.setInfo('Bob', 22);Accede a las variables de instancia utilizando el operador de punto:
print('${student1.name} is ${student1.age} at ${student1.school}');
print('${student2.name} is ${student2.age} at ${student2.school}');Salida:
Alice is 20 at Dart Academy
Bob is 22 at Dart AcademyObserva que school es el mismo para ambos objetos porque tiene un valor por defecto, mientras que name y age son únicos para cada objeto porque se establecieron individualmente a través de setInfo.
Desafío
FácilCompleta la clase Student en student.dart:
- Declara una variable de instancia
String schoolcon el valor por defecto'Dart Academy' - Declara una variable de instancia
String namecon el valor por defecto'' - Declara una variable de instancia
int agecon el valor por defecto0 - Añade un método
setInfoque recibaString nameeint agecomo parámetros y los asigne al objeto utilizandothis
El archivo driver.dart probará tu clase creando dos estudiantes e imprimiendo su información (bloqueado).
Hoja de referencia
Las variables de instancia son variables declaradas dentro de una clase. Cada objeto obtiene su propia copia de estas variables.
Declare las variables de instancia con un tipo y un valor predeterminado opcional:
class Student {
String school = 'Dart Academy'; // tiene un valor predeterminado
String name = ''; // valor predeterminado vacío
int age = 0; // valor predeterminado cero
}Use un método con this para establecer los datos individuales del objeto:
class Student {
String school = 'Dart Academy';
String name = '';
int age = 0;
void setInfo(String name, int age) {
this.name = name; // this.name = variable de instancia
this.age = age; // this.age = variable de instancia
}
}Cree objetos y asigne sus datos:
Student student1 = Student();
Student student2 = Student();
student1.setInfo('Alice', 20);
student2.setInfo('Bob', 22);Acceda a las variables de instancia utilizando el operador de punto:
print('${student1.name} is ${student1.age} at ${student1.school}');
// Output: Alice is 20 at Dart AcademyPruébalo tú mismo
import 'student.dart';
void main() {
Student student1 = Student();
Student student2 = Student();
student1.setInfo('Alice', 20);
student2.setInfo('Bob', 22);
print('${student1.name} is ${student1.age} at ${student1.school}');
print('${student2.name} is ${student2.age} at ${student2.school}');
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de POO
Archivos externosLibrerías e importacionesIntroducción a la POOClases vs. ObjetosLa palabra clave thisMétodosVariables de instanciaConceptos básicos de constructoresResumen - Calculadora sencilla4Seguridad de nulos
Introducción a la seguridad de nulosNulables vs No nulablesLos operadores ? y !Palabra clave Late y Null SafetyOperadores Null-awareNull Safety en clasesResumen - Sistema de perfil de usuario7Clases abstractas e interfaces
Clases abstractasMétodos abstractosInterfaces en DartInterfaces implícitasImplementar vs. ExtenderInterfaces múltiplesRepaso - Calculadora de figuras10Colecciones y Genéricos
Visión general de List, Set y MapColecciones con seguridad de tiposClases genéricasMétodos genéricosRestricciones genéricasIterable e IteratorResumen - Almacenamiento genérico2Constructores en Dart
Constructor por defectoConstructores nombradosListas de inicializaciónConstructores constantesConstructores de fábricaConstructores de redireccionamientoResumen - Constructor de formas5Encapsulamiento
Miembros públicos vs. privadosLa convención del prefijo _Privacidad a nivel de libreríaProfundidad en Getters y SettersOcultamiento de informaciónResumen - Registros de estudiantes8Mixins
Introducción a los MixinsCreación de MixinsUso de múltiples MixinsPalabra clave on en MixinsMixin vs HerenciaMixin vs InterfazResumen - Sistema Animal11Métodos especiales
Sobrescritura de toString()Sobrescritura de hashCode y ==Interfaz ComparableMétodo call()Sobrescritura de noSuchMethodResumen - Colección personalizada14Patrones de diseño Parte 1
Introducción a los patrones de diseñoPatrón SingletonPatrón FactoryPatrón ObserverPatrón Strategy3Propiedades de clase
Miembros de instancia vs. estáticosCampos Final y ConstVariables LateMétodos y campos estáticosGetters y SettersResumen - Gestor de cuentas bancarias6Herencia
Herencia básicaLa palabra clave superSobrescritura de métodosLa anotación @overrideLa palabra clave final en clasesConstructores y herenciaResumen - Jerarquía de empleados9Polimorfismo
Fundamentos del polimorfismoPolimorfismo mediante interfacesComprobación de tipos en tiempo de ejecuciónLos operadores is y asPalabra clave covariantResumen - Procesador de pagos12POO Asíncrona
Futures y async/awaitFundamentos de StreamsStream ControllersConstructores asíncronosAsincronía en métodos de claseRepaso - Data Fetcher15Patrones de diseño Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositePatrón Repository