我是一个java初学者,在看马士兵的视频教程对象转型遇到了如下问题请高手帮帮忙,多谢了!

classAnimal{Stringname;publicAnimal(Stringname){this.name=name;}publicStringgetinfo()... class Animal
{
String name;
public Animal(String name)
{
this.name=name;
}
public String getinfo()
{
return name;
}

}

class Dog extends Animal
{
String name,fu;
public Dog(String n,String fu)
{
super(n);
this.fu=fu;
}
public String getinfo()
{
return name+fu;
}
}

public class Test12
{
public static void main(String[] args)
{
Animal a=new Animal("xiaobai");
Dog d=new Dog("hali","black");
a=new Dog("heizi","yellow");
System.out.println(a.getinfo());
}
}

这个程序的输出结果是:nullyellow,我感觉应该是:heiziyellow,为什么结果会出现null??
展开
 我来答
QinQinMeCC
2012-03-29 · TA获得超过2017个赞
知道小有建树答主
回答量:808
采纳率:100%
帮助的人:567万
展开全部
因为你class Dog extends Animal
{
String name,fu;
public Dog(String n,String fu)
{
super(n); //就是这里的问题
this.fu=fu;
}
public String getinfo()
{
return name+fu;
}
}
这个Dog类的实现方法是调用了父类的name赋值所以就把值赋给父类的name,而不是赋值给你Dog类的那么。并且 你 a 实现的是Dog对象 所以 System.out.println(a.getinfo());
就为nullyellow。 不信打断点调试 。
浅夏的猫咪
2012-03-29 · TA获得超过113个赞
知道答主
回答量:158
采纳率:0%
帮助的人:47.5万
展开全部
Animal类是Dog类的父类,a=new Dog("heizi","yellow");
这里a表面上是子类他是父类,a只能调用子类中重写的方法,不能调用子类中特有的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dzytslty
2012-03-29 · 超过15用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:44.2万
展开全部
Dog类中name去掉就是你要的结果了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式