说我们有2个班级:
public class A {
private String name = "A";
public String toString()
{
return (name + "some random text");
}
}
public class B extends A{
private String name = "B";
public String toString()
{
return (super.toString());
}
}
当我尝试在我的驱动程序类中打印B.toString()
时,它仍会打印A类中的名称而不是B类中的名称。如何更改它以便它将使用类中的变量名称B而不是?
答案 0 :(得分:1)
你可以通过使用构造函数来实现 -
public class HelloWorld {
public static void main(String[] args) {
A a = new A("A String");
B b = new B("B String");
System.out.println(a.toString()); // A String some random text
System.out.println(b.toString()); // B String some random text
}
}
class A {
protected String name;
A(String name) {
this.name = name;
}
public String toString() {
return name + " some random text";
}
}
class B extends A {
B(String name) {
super(name);
}
@Override
public String toString() {
return (super.toString());
}
}
由于B
继承自A
,因此当您将字符串传递给name
的构造函数时,B
字段会正确设置。