O castingu podklasy do superklasy w JAVA
public class Car {
String color;
public void thisIs(){
System.out.println("Calling method from Car: the color is " + color);
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
public class BMW extends Car {
public void thisIs(){
System.out.println("Calling method from BMW: the color is " + color);
}
public Car toCar(){
Car newCar = new Car();
newCar.setColor(this.color);
return newCar;
}
}
public class AbstractTest {
public static void main(String args[]){
Car aCar = new Car();
aCar.setColor("Red");
aCar.thisIs();
BMW aBMW = new BMW();
aBMW.setColor("Black");
aBMW.thisIs();
//Car aaCar = new Car();
//aaCar = (Car)aBMW;
//aaCar.thisIs();
Car aaCar = aBMW.toCar();
aaCar.thisIs();
}
}
Oczekuję, że wynik będzie:
Metoda dzwonienia z samochodu: kolor jest czerwony
Metoda dzwonienia z BMW: kolor jest czarny
Metoda dzwonienia z samochodu: kolor jest czarny
Ale otrzymałem wynik:
Metoda dzwonienia z samochodu: kolor jest czerwony
Metoda dzwonienia z BMW: kolor jest czarny
Metoda dzwonienia z BMW: kolor jest czarny
Gdzie się mylę? Jak mogę użyć metody z super klasy, aby uzyskać dane w obiekcie podklasy? Mogę napisaćtoCar()
metoda w klasie BMW, aby to zrobić. Ale dlaczego odlewanie nie działa? Dzięki przed nami!
DOBRZE! Dziękuję Ci!
Mam dlaczego casting nie działa.
Dodałem metodę do BMW toCar (), aby uzyskać pożądany rezultat.