package TestPack;
class Fruit {
String name = "Fruit";
public void show() {
System.out.println("show fruit");
}
}
class Apple extends Fruit{
String name = "Apple";
public void show() {
System.out.println("show apple");
}
}
class Method{
public void method(Fruit f) {
System.out.println(f.name);
}
public void methood(Fruit f) {
f.show();
}
}
public class Demo{
public static void main(String[] args) {
new Method().method(new Fruit()); // 输出:Fruit
new Method().method(new Apple()); // 输出:Fruit
new Method().methood(new Fruit()); // 输出:show fruit
new Method().methood(new Apple()); // 输出:show apple
}
}
如上面代码,为什么第二个输出语句不是Apple??难道不是调用子类new Apple()的name变量吗?
è¿æ¯ç»§æ¿éé¢çç¥è¯ï¼å¯ä»¥å¨å®ä¾éé¢ä½ä¼
ä¾åå¦ä¸ï¼
public class Test {// æµè¯ç±»r
public static void main(String[] args) throws IOException {
B b = new B();
}
}
class A{
public A() {
System.out.println("Aç±»çæ åæ°æé æ¹æ³");
}
}
class B extends A{
public B() {
//è¿éé¢ä¸åï¼ç³»ç»ä¹ä¼é»è®¤çè°ç¨super(),å³ç¶ç±»çæ åæé ã
//ä¸ç®¡åç±»çæ åæé è¿æ¯æåæé
System.out.println("Bç±»çæ åæ°æé æ¹æ³");
}
}
追é®è°¢è°¢ä½ åçï¼è½ç¶æ²¡æ解å³æçé®é¢ï¼ä½æ¯è¿æ¯å¾æè°¢ï¼æå·²ç»èªå·±è§£å³äºï¼