我是一个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?? 展开
{
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?? 展开
3个回答
展开全部
因为你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。 不信打断点调试 。
{
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。 不信打断点调试 。
展开全部
Animal类是Dog类的父类,a=new Dog("heizi","yellow");
这里a表面上是子类他是父类,a只能调用子类中重写的方法,不能调用子类中特有的方法
这里a表面上是子类他是父类,a只能调用子类中重写的方法,不能调用子类中特有的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Dog类中name去掉就是你要的结果了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询