Jak poprawnie wykonać casting ?

Jak poprawnie wykonać casting ?
Javowiec
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 23
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.

Kopiuj

//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

	}

}

 
kzkzg
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 939
0

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

kzkzg
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 939
0

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

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
1
Kopiuj
Czlowiek c = new Pracownik("Alojzy", 12);
((Pracownik)c).printInfo();

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.