Laboratorium Java – Stosowanie polimorfizmu [2h]
Polimorfizm – wielopostaciowość :
–
przeciążanie (ang. overloading / ad-hoc polymorphism)
–
przesłanianie (ang. overriding)
class
Samochod {
private
String marka;
private
int
rok;
//przeciazanie
public
Samochod(String marka) {
this
(marka, 2005);
}
public
Samochod(String marka,
int
rok) {
this
.marka = marka;
this
.rok = rok;
}
//przeslanianie
public
String toString() {
return
marka +
" rocznik "
+ rok;
}
}
public
class
Test {
public
static
void
main(String[] args) {
System.out.println(
new
Samochod(
"BMW"
));
//automatyczna konwersja typu - wywolanie metody toString
}
}
BMW rocznik 2005
Rzutowanie obiektów:
–
rzutowanie w górę (ang. upcasting)
•
wywoływana zawsze metoda przesłonięta
•
wskazywanie na pole określonego typu
class
Pierwsza {
protected
int
pole = 10;
public
int
metoda() {
return
pole;
}
}
class
Druga
extends
Pierwsza {
//przeslanianie pola
protected
int
pole = 20;
//przeslanianie metody
public
int
metoda() {
return
pole + 5;
}
}
public
class
Test {
public
static
void
main(String[] args) {
Pierwsza pierwsza =
new
Druga();
Druga druga = (Druga) pierwsza;
System.out.println(
"Pole: "
+pierwsza.pole+
" "
+druga.pole);
System.out.println(
"Metoda: "
+pierwsza.metoda()+
" "
+druga.metoda());
}
}
Pole: 10 20
Metoda: 25 25
Laboratorium Java 06 (Opracowanie: Konrad Kurczyna)
1/2
Zadanie:
–
zaimplementować aplikację z wykorzystaniem obu mechanizmów polimorfizmu
–
wykorzystać rzutowanie
Laboratorium Java 06 (Opracowanie: Konrad Kurczyna)
2/2