0
は、我々は2つのクラスを持っていると言います代わりにクラスBの変数名を使用するように変更することはできますか?スーパーのtoString()メソッドを呼び出しますが、現在のクラスの変数を使用して
は、我々は2つのクラスを持っていると言います代わりにクラスBの変数名を使用するように変更することはできますか?スーパーのtoString()メソッドを呼び出しますが、現在のクラスの変数を使用して
あなたはコンストラクタを使用してそれを行うことができます - あなたはB
のコンストラクタに文字列を渡すときA
から
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
ため継承し、name
フィールドが正しくセットアップされています。
事は、私はすでに名前なしで他のパラメータを取るコンストラクタを持っていて、クラスAとBの変数名はあらかじめ決められています。 –
1. private String name = "B"; 'を削除します。2.クラスAのコンストラクタを追加して、名前を設定します。 3.名前の値として渡された "B"を持つスーパーコンストラクタを呼び出すクラスBのコンストラクタを追加します。reason: 'super.toString()'を呼び出すと、クラスAのname変数が使用されます。 "A" –