19 Pola, metody, klasy finalne
Wykonaj kolejno czynności:
A. Stwórz klasę
Planet
z jednym polem finalnymname
. Spróbuj zmienić wartość polaname
po jego inicjalizacji. Przeanalizuj wynik.B. Dodaj do klasy
Planet
metodęchangeName
, która próbuje zmienić nazwę planety. Jaki jest wynik próby zmiany finalnego pola za pomocą metody?Stwórz klasę
Car
z dwoma polami:brand
(normalne pole) iVIN
(pole finalne - Numer Identyfikacyjny Pojazdu). Stwórz kilka obiektówCar
i spróbuj zmienić poleVIN
dla każdego z nich. Przeanalizuj wynik.Stwórz klasę
Athlete
z jednym polem finalnymname
oraz polempoints
. Stwórz tablicę zawodników i spróbuj zmienić polename
dla jednego z zawodników. Przeanalizuj wynik.Stwórz klasę
Person
z jednym polem finalnymPESEL
. Następnie stwórz klasęStudent
, która dziedziczy po klasiePerson
. Czy możesz zmienić polePESEL
w klasieStudent
? Co się stanie, jeśli spróbujesz to zrobić? Przeanalizuj wyniki.Stwórz klasę bazową
Electronics
z metodą finalnąturnOn
, która wypisuje “Urządzenie włączone”. Następnie stwórz klasę potomnąTelevision
i spróbuj przesłonić metodęturnOn
. Zaobserwuj, co się dzieje.Stwórz klasę
Computer
z metodą finalnąboot
oraz zwykłą metodąlaunchApplication
. W klasie potomnejLaptop
, spróbuj przesłonić obie metody. Sprawdź, która z metod pozwoli się przesłonić, a której nie.Utwórz finalną klasę
ImmutableData
z pewnymi atrybutami i metodami. Następnie spróbuj stworzyć klasę potomnąVariableData
, która dziedziczy po klasieImmutableData
. Zastanów się, dlaczego nie można dziedziczyć po klasie oznaczonej jakofinal
.Stwórz klasę
Game
, która w swoim konstruktorze ma metodę finalnąinitialize
(inicializującą pewne dane). Utwórz klasę potomnąRPG
, która próbuje dostosować konstruktor klasy bazowej. Upewnij się, że metodainitialize
działa poprawnie, mimo że jest oznaczona jakofinal
.Utwórz klasę
MathConstant
z finalnym polemPI
, które jest inicjowane wartością 3.14159. W klasie potomnejPhysicalConstant
, spróbuj stworzyć metodę, która próbuje zmienić wartośćPI
. Zastanów się, dlaczego wartość finalnego pola nie może zostać zmieniona po jego inicjalizacji.Wykonaj poniższe czynności:
- Stwórz klasę
ImmutableDate
z prywatnymi finalnymi polami:year
(rok),month
(miesiąc),day
(dzień). - Dodaj konstruktor parametryczny do inicjalizacji wszystkich pól.
- Dodaj publiczne metody
getYear
,getMonth
,getDay
do pobierania wartości pól, ale nie dodawaj żadnych metod umożliwiających ich modyfikację. - Zaimplementuj metody
toString
,equals
ihashCode
. - Sprawdź, czy taka klasa może być uznana jako niemodyfikowalna (inmutable).
- Wykonaj poniższe czynności:
- Stwórz klasę
ImmutablePoint
z prywatnymi finalnymi polami:x
,y
,z
(współrzędne punktu). - Dodaj konstruktor parametryczny do inicjalizacji wszystkich pól.
- Dodaj publiczne metody
getX
,getY
,getZ
do pobierania wartości pól, ale nie dodawaj żadnych metod umożliwiających ich modyfikację. - Zaimplementuj metody
toString
,equals
ihashCode
. - Sprawdź, czy taka klasa może być uznana jako niemodyfikowalna (inmutable).
- Wykonaj poniższe czynności:
- Stwórz klasę
ImmutableBook
z prywatnymi finalnymi polami:title
(tytuł),author
(autor),isbn
(numer ISBN). - Dodaj konstruktor parametryczny do inicjalizacji wszystkich pól.
- Dodaj publiczne metody
getTitle
,getAuthor
,getIsbn
do pobierania wartości pól, ale nie dodawaj żadnych metod umożliwiających ich modyfikację. - Zaimplementuj metody
toString
,equals
ihashCode
. - Sprawdź, czy taka klasa może być uznana jako niemodyfikowalna (inmutable).