1.题目:
现有:
class Guy{
String greet(){
return "hi";
}
}
class Cowboy extends Guy{
String greet(){
return "howdy";
}
}
class Wrangler extends Cowboy{
String greet(){
return "ouch!";
}
}
public class Greetings2{
public static void main(String[] args){
Guy g=new Wrangler();
Guy g2=new Cowboy();
Wrangler w2=new Wrangler();
System.out.print(g.greet()+g2.greet()+w2.greet());
}
}
结果是什么?
A hihiouch! B ouch!howdyouch! C hihowdyouch! D 编译失败
答案:B
父类引用指向子类对象可以称为向上转型。当父类引用所调用的方法在子类中被重写了,则执行所指向的子类中该方法的方法体,所以这道题就输出 ouch!howdyouch!。但是值得注意的是只有方法才能被重写,所以在访问属性时调用的就是父类中的属性。结合图理解一下,我在本题的基础上加了一点。
还有需要注意的时,父类引用不能访问子类中独有的方法。父类引用可以访问父类独有的属性。
对于父类引用能不能访问父类独有的方法我还是有点疑问,以后补充。
宝剑锋从磨砺出,梅花香自苦寒来。--冯梦龙
加油!小芳同学



