Jak poprawnie wykonać casting ?

0

Klasa Pracownik dziedziczy po klasie Czlowiek. Klasa pracownik ma metodę, która wyświetla wiek pracownika. Jak wykonać tę metodę na człowieku?

Dostaję komunikat, że Czlowiek nie może być zacastowany do Pracownika.


//klasa Czlowiek--------------------------------------------------
package obiekty;

public class Czlowiek {
	private String name;


	public Czlowiek(String name){
		this.name = name;
	}
	

}


//klasa Pracownik----------------------------------------------------------
package obiekty;

public class Pracownik extends Czlowiek {
	private static  int workYear;
	
	public Pracownik(String name, int workYear){
		super(name);
		this.workYear = workYear;
	}

//tutaj ta nieszczęsna metoda
	public void printInfo(){
		System.out.println(workYear);

		
	}	
	
}






//klasa Main-------------------------------------------------
package obiekty;

public class Main {
	public static void main(String [] args){
		
		Czlowiek c = new Czlowiek("Alojzy");

		Pracownik p = new Pracownik("Rzepicha",22);
		
		((Pracownik)c).printInfo(); //tutaj chcę zrobić kastowanie

	}

}

 
0

Metoda printInfo jest w klasie Pracownik, wiec czemu chcesz ja wywolac na bardziej ogolnym typie ktory tej metody nie posiada?

0

Tworzysz Człowieka i przypisujesz mu tylko imię, wiec jakiej wartości wieku oczekujesz po wywołaniu metody printInfo?

1
Czlowiek c = new Pracownik("Alojzy", 12);
((Pracownik)c).printInfo();

Zauważ, że c trzyma obiekt typu Pracownik (mimo że jest referencją typu Czlowiek).

1 użytkowników online, w tym zalogowanych: 0, gości: 1