Au sujet du casting de la sous-classe de super-classe en 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();
}
}

J'attends le résultat:

L'appel de méthode à partir de la Voiture: la couleur est Rouge

Méthode d'appel de BMW: la couleur est le Noir

L'appel de méthode à partir de la Voiture: la couleur est le Noir

Mais, le résultat que j'ai obtenu est:

L'appel de méthode à partir de la Voiture: la couleur est Rouge

Méthode d'appel de BMW: la couleur est le Noir

Méthode d'appel de BMW: la couleur est le Noir

Où je me trompe?
Et comment puis-je utiliser la méthode de la super-classe pour obtenir les données dans une sous-classe de l'objet?
Je peux écrire un toCar() méthode BMW classe pour ce faire.
Mais, pourquoi casting ne fonctionne pas?
Merci d'avance!

OK! Merci!!!!

Je me suis pourquoi casting ne fonctionne pas.

Donc, j'ai ajouter une méthode dans BMW toCar() pour obtenir le résultat que je veux.

C'est la base de la programmation orientée objet, vous voudrez peut-être lire un bon livre
J'aime la façon dont ce tutoriel vous explique: cs.utexas.edu/users/cannata/cs345/Class%20Notes/...
Oui. Le lien explique ce que j'ai mal compris. Je vous remercie.

OriginalL'auteur user1947415 | 2013-01-04

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *