【发布时间】:2016-07-27 03:31:39
【问题描述】:
有T类:
public class T
{
protected String name;
public T(String name)
{
this.name = name;
}
public String toString()
{
return "T:"+this.name;
}
}
G 类:
public class G extends T
{
public G(String name)
{
super(name);
}
public String toString()
{
return "G:" + super.toString();
}
}
当我跑步时
G a3 = new G("me");
System.out.println((T)a3)
它打印G:T:me。
我不明白为什么。我以为它会打印T:me。我声称这是因为它被转换为对象 T。因此,使用 T 类的toString()。但是,我错了。为什么会这样?
我知道类没有好名字,这是一个关于理解多态性和继承的问题,而不仅仅是编写我需要的特定代码。
【问题讨论】:
-
super.toString()是做什么的? -
你问我的问题是为了让你理解还是让我思考一下?使用该代码,它将激活类 T 的 toString() 方法。
-
所以你会考虑的。
-
@Pillar 哦,我说得对吗?
-
我不明白的部分是为什么它没有激活类T上的toString()方法。
标签: java inheritance casting polymorphism output