Zmienne instancji
Część sekcji Programowanie obiektowe ścieżki Dart w Coddy. Lekcja 7 z 110.
Zmienne instancji to zmienne zadeklarowane wewnątrz klasy. Każdy obiekt utworzony na podstawie klasy otrzymuje własną kopię tych zmiennych, niezależną od wszystkich pozostałych obiektów.
Deklaruj zmienne instancji z typem i opcjonalną wartością domyślną:
class Student {
String school = 'Dart Academy'; // ma wartość domyślną
String name = ''; // domyślnie pusty ciąg znaków
int age = 0; // domyślnie zero
}Zmienne z wartościami domyślnymi mają taką samą wartość dla każdego nowego obiektu. Zmienne takie jak name i age pozostają puste lub mają wartość zero, dopóki ich nie ustawisz.
Użyj metody z this, aby ustawić dane poszczególnych obiektów:
class Student {
String school = 'Dart Academy';
String name = '';
int age = 0;
void setInfo(String name, int age) {
this.name = name; // this.name = zmienna instancji
this.age = age; // this.age = zmienna instancji
}
}Utwórz uczniów i przypisz im dane:
Student student1 = Student();
Student student2 = Student();
student1.setInfo('Alice', 20);
student2.setInfo('Bob', 22);Dostęp do zmiennych instancji uzyskasz za pomocą operatora kropki:
print('${student1.name} is ${student1.age} at ${student1.school}');
print('${student2.name} is ${student2.age} at ${student2.school}');Wynik:
Alice is 20 at Dart Academy
Bob is 22 at Dart AcademyZauważ, że school jest takie samo dla obu obiektów, ponieważ ma wartość domyślną, podczas gdy name i age są unikalne dla każdego obiektu, ponieważ zostały ustawione indywidualnie za pomocą setInfo.
Wyzwanie
ŁatwyUzupełnij klasę Student w pliku student.dart:
- Zadeklaruj zmienną instancji
String schoolz domyślną wartością'Dart Academy' - Zadeklaruj zmienną instancji
String namez domyślną wartością'' - Zadeklaruj zmienną instancji
int agez domyślną wartością0 - Dodaj metodę
setInfo, która przyjmuje parametryString nameiint ageoraz ustawia je w obiekcie za pomocąthis
Plik driver.dart przetestuje Twoją klasę, tworząc dwóch uczniów i wypisując ich informacje (plik zablokowany).
Spróbuj swoich sił
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}');
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy OOP
Pliki zewnętrzneBiblioteki i importyWprowadzenie do OOPKlasy a obiektySłowo kluczowe thisMetodyZmienne instancjiPodstawy konstruktorówPowtórka – prosty kalkulator4Bezpieczeństwo wartości null
Wprowadzenie do bezpieczeństwa wartości nullTypy dopuszczające null i niedopuszczające nullOperatory ? i !Słowo kluczowe late a bezpieczeństwo wartości nullOperatory uwzględniające nullBezpieczeństwo wartości null w klasachPodsumowanie — system profili użytkowników7Klasy abstrakcyjne i interfejsy
Klasy abstrakcyjneMetody abstrakcyjneInterfejsy w DartInterfejsy niejawneImplementowanie a rozszerzanieWiele interfejsówPowtórka — kalkulator kształtów10Kolekcje i typy generyczne
Przegląd List, Set i MapKolekcje bezpieczne typowoKlasy generyczneMetody generyczneOgraniczenia typów generycznychIterable i IteratorPowtórka — generyczne przechowywanie danych13Zaawansowane koncepcje OOP
Kompozycja a dziedziczenieMetody rozszerzająceKlasy wywoływalneKlasy zapieczętowane (Dart 3)Rekordy (Dart 3)Wzorce i dopasowywanie (3.0)Typy wyliczeniowe z metodami16Projekt: Zarządzanie biblioteką
Omówienie projektuKlasy książek i użytkowników2Konstruktory w Dart
Konstruktor domyślnyKonstruktory nazwaneListy inicjalizująceKonstruktory stałeKonstruktory fabryczneKonstruktory przekierowującePodsumowanie — budowanie kształtów5Hermetyzacja
Elementy publiczne a prywatneKonwencja prefiksu _Prywatność na poziomie bibliotekiGettery i settery — szczegółowoUkrywanie informacjiPodsumowanie — dane uczniów8Domieszki
Wprowadzenie do domieszekTworzenie domieszekKorzystanie z wielu domieszekSłowo kluczowe on w domieszkachDomieszka a dziedziczenieDomieszka a interfejsPodsumowanie – system zwierząt11Metody specjalne
Nadpisanie toString()Nadpisanie hashCode i ==Interfejs ComparableMetoda call()Nadpisanie noSuchMethodPodsumowanie — własna kolekcja14Wzorce projektowe, część 1
Wprowadzenie do wzorców projektowychWzorzec SingletonWzorzec FactoryWzorzec ObserverWzorzec Strategy3Właściwości klas
Elementy instancji a elementy statycznePola final i constZmienne inicjalizowane z opóźnieniemMetody i pola statyczneGettery i setteryPowtórzenie – menedżer kont bankowych6Dziedziczenie
Podstawy dziedziczeniaSłowo kluczowe superPrzesłanianie metodAdnotacja @overrideSłowo kluczowe final dla klasKonstruktory i dziedziczeniePowtórzenie – hierarchia pracowników9Polimorfizm
Podstawy polimorfizmuPolimorfizm za pomocą interfejsówSprawdzanie typu w czasie działaniaOperatory is i asSłowo kluczowe covariantPodsumowanie — procesor płatnościPoćwicz samodzielnie: Kompilator Dart online