background image

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

background image

Zadanie:

zaimplementować aplikację z wykorzystaniem obu mechanizmów polimorfizmu

wykorzystać rzutowanie

Laboratorium Java 06 (Opracowanie: Konrad Kurczyna)

2/2