2017-10-07 5 views
0

は、我々は2つのクラスを持っていると言います代わりにクラスBの変数名を使用するように変更することはできますか?スーパーのtoString()メソッドを呼び出しますが、現在のクラスの変数を使用して

+0

1. private String name = "B"; 'を削除します。2.クラスAのコンストラクタを追加して、名前を設定します。 3.名前の値として渡された "B"を持つスーパーコンストラクタを呼び出すクラスBのコンストラクタを追加します。reason: 'super.toString()'を呼び出すと、クラスAのname変数が使用されます。 "A" –

答えて

0

あなたはコンストラクタを使用してそれを行うことができます - あなたは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フィールドが正しくセットアップされています。

+0

事は、私はすでに名前なしで他のパラメータを取るコンストラクタを持っていて、クラスAとBの変数名はあらかじめ決められています。 –

関連する問題