19 Pola, metody, klasy finalne
Wykonaj kolejno czynności:
A. Stwórz klasę
Planetz jednym polem finalnymname. Spróbuj zmienić wartość polanamepo jego inicjalizacji. Przeanalizuj wynik.B. Dodaj do klasy
PlanetmetodęchangeName, która próbuje zmienić nazwę planety. Jaki jest wynik próby zmiany finalnego pola za pomocą metody?Stwórz klasę
Carz dwoma polami:brand(normalne pole) iVIN(pole finalne - Numer Identyfikacyjny Pojazdu). Stwórz kilka obiektówCari spróbuj zmienić poleVINdla każdego z nich. Przeanalizuj wynik.Stwórz klasę
Athletez jednym polem finalnymnameoraz polempoints. Stwórz tablicę zawodników i spróbuj zmienić polenamedla jednego z zawodników. Przeanalizuj wynik.Stwórz klasę
Personz jednym polem finalnymPESEL. Następnie stwórz klasęStudent, która dziedziczy po klasiePerson. Czy możesz zmienić polePESELw klasieStudent? Co się stanie, jeśli spróbujesz to zrobić? Przeanalizuj wyniki.Stwórz klasę bazową
Electronicsz metodą finalnąturnOn, która wypisuje “Urządzenie włączone”. Następnie stwórz klasę potomnąTelevisioni spróbuj przesłonić metodęturnOn. Zaobserwuj, co się dzieje.Stwórz klasę
Computerz metodą finalnąbootoraz 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ę
ImmutableDataz 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 metodainitializedziała poprawnie, mimo że jest oznaczona jakofinal.Utwórz klasę
MathConstantz 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ę
ImmutableDatez prywatnymi finalnymi polami:year(rok),month(miesiąc),day(dzień). - Dodaj konstruktor parametryczny do inicjalizacji wszystkich pól.
- Dodaj publiczne metody
getYear,getMonth,getDaydo pobierania wartości pól, ale nie dodawaj żadnych metod umożliwiających ich modyfikację. - Zaimplementuj metody
toString,equalsihashCode. - Sprawdź, czy taka klasa może być uznana jako niemodyfikowalna (inmutable).
- Wykonaj poniższe czynności:
- Stwórz klasę
ImmutablePointz prywatnymi finalnymi polami:x,y,z(współrzędne punktu). - Dodaj konstruktor parametryczny do inicjalizacji wszystkich pól.
- Dodaj publiczne metody
getX,getY,getZdo pobierania wartości pól, ale nie dodawaj żadnych metod umożliwiających ich modyfikację. - Zaimplementuj metody
toString,equalsihashCode. - Sprawdź, czy taka klasa może być uznana jako niemodyfikowalna (inmutable).
- Wykonaj poniższe czynności:
- Stwórz klasę
ImmutableBookz prywatnymi finalnymi polami:title(tytuł),author(autor),isbn(numer ISBN). - Dodaj konstruktor parametryczny do inicjalizacji wszystkich pól.
- Dodaj publiczne metody
getTitle,getAuthor,getIsbndo pobierania wartości pól, ale nie dodawaj żadnych metod umożliwiających ich modyfikację. - Zaimplementuj metody
toString,equalsihashCode. - Sprawdź, czy taka klasa może być uznana jako niemodyfikowalna (inmutable).