@@ -17,6 +17,13 @@ public class Student extends Osoba {
this.kierunek=kierunek;
}
// Jeśli chodzi o metody, podklasa może
// 1) Nie zmieniać metod odziedziczonych z nadklasy
// przykład: jestPelnoletnia()
// Taka metoda w nadklasie może być zadeklarowana jako "final" - to znaczy,
// że jest to ostateczna definicja i podklasa nie może jeje zmienić
// 2) Dodać nowe metody, których nie było w nadklasie
voiddodajOcene(intocena){
oceny.add(ocena);
}
...
...
@@ -29,4 +36,23 @@ public class Student extends Osoba {
returnsuma/oceny.size();
}
// 3) Nadpisać (override) metody, które były zdefiniowane w nadklasie
// czyli dla istniejących metoda podać inną treść.
@Override
voidprzedstawSie(){
System.out.println("Hej tu "+imie+" "+nazwisko
+", studiuję kierunek "+kierunek+", jestem na "+rok+" roku.");
}
// Od Javy 5 przed definicją metody, która nadpisuje definicję z nadklasy, można umieścić adnotację @Override
// Ważne: nawet bez tej adnotacji nadpisanie jest skuteczne. Adnotacja tylko:
// - zwiększa czytelność kodu ("rzuca się w oczy")
// - powoduje błąd kompilacji, gdyby okazało się, że jednak tutaj nie nadpisujemy metody, tylko definiujemy nową (np. literówka w nazwie, parametry innego typu)
@Override
publicStringtoString(){
// do tego, co zwraca toString zdefiniowany w klasie Osoba, dodaję info o roku i kierunku studiów:
returnsuper.toString()+", studiuje na "+rok+" roku kierunku "+kierunek;