@@ -18,6 +18,14 @@ public class Student extends Osoba {
this.rok=rok;
}
// 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);
}
...
...
@@ -28,5 +36,21 @@ public class Student extends Osoba {
.average()
.orElse(0);
}
// 3) Nadpisać (override) metody, które były zdefiniowane w nadklasie
// czyli dla istniejących metoda podać inną treść.
voidprzedstawSie(){
System.out.println("Hej tu "+imie+" "+nazwisko+", studiuję "+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(){
returnsuper.toString()+", student "+rok+" roku kierunku "+kierunek;