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).
Prué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