调用超级 toString() 方法但使用当前 class' 变量
Calling a super toString() method but using current class' variables
假设我们有 2 个 classes:
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());
}
}
当我试图在我的驱动程序 class 中打印 B.toString()
时,它仍然会打印 class A 中的名称而不是 class B 中的名称。我怎样才能改变它,以便它使用 class B 中的变量名?
您可以通过使用构造函数来实现 -
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
,当您将字符串传递给 B
的构造函数时,name
字段设置正确。
假设我们有 2 个 classes:
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());
}
}
当我试图在我的驱动程序 class 中打印 B.toString()
时,它仍然会打印 class A 中的名称而不是 class B 中的名称。我怎样才能改变它,以便它使用 class B 中的变量名?
您可以通过使用构造函数来实现 -
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
,当您将字符串传递给 B
的构造函数时,name
字段设置正确。