1

わかりました、これが問題です!

GetStuffクラスがあります

public class GetStuff {

   public GetStuff(String data) {
       // stuff
   }

}

このクラスには、2番目のメソッドを呼び出すgetMyStuff()メソッドがあります。

getAllMyStuff();

ここで、クラスを拡張したいので、次のようにします。

public class GetSecondStuff extends GetStuff {

      public GetSecondStuff(String data, int newData) {
           super(data);
      }

}

この2番目のクラスでは、getAllMyStuffMethodをオーバーライドしますが、このメソッド内では、コンストラクターからnewDataパラメーターを使用する必要があります。

private String getAllMyStuffMethod() {
   if (newData==0) // do something
}

ここでnewDataを使用するにはどうすればよいですか?:(

4

4 に答える 4

2

GetSecondStuffクラスに新しいフィールドを作成し、コンストラクターに割り当てます。次に、オーバーライドされたメソッドでnewDataを使用できます。

于 2012-11-22T15:19:20.690 に答える
1

変数newDataをインスタンス変数に保存します。これにより、GetSecondStuffクラスでアクセスできます。

何かのようなもの:

public class GetSecondStuff extends GetStuff {
    private int newData;

    public GetSecondStuff(String data, int newData) {
      super(data);
      this.newData = newData;
    }

    private String getAllMyStuffMethod() {
      if (this.newData==0) // do something
    }
  }

編集

コメントの1つで、スーパークラスでサブクラスパラメーターを使用したいと読んだ。では、なぜ新しいパラメータがスーパークラスにないのか教えてもらえますか?

于 2012-11-22T15:18:41.273 に答える
1

最初のクラスを拡張するクラスには独自のプロパティがある場合があります。それらを使用してください。

public class GetSecondStuff extends GetStuff {
  int _newData
  public GetSecondStuff(String data, int newData) {
       super(data);
       _newData = newData;
  }


   private String getAllMyStuffMethod() {
     if (_newData==0) // do something
   }
}
于 2012-11-22T15:20:37.600 に答える
1
public class GetStuff {
    public GetStuff(String data) {
        System.out.println(data);
    }
}

public class GetSecondStuff extends GetStuff {
    private int newData;

    public GetSecondStuff(String data, int newData) {
        super(data);
        this.newData = newData;


        data = "GetSecondStuff";        
        System.out.println(data);

        System.out.println(getAllMyStuffMethod());

    }

    private String getAllMyStuffMethod() {
        String ret=null;
          if (this.newData==0)
              ret="0";
          else
              ret="1";

        return "new data : "+ret;
    }
}

public class main {

    public static void main(String[] args) {        

        GetSecondStuff gf2 = new GetSecondStuff("GetStuff",1);      
    }

}

出力:

GetStuff

GetSecondStuff

新しいデータ:1

于 2012-11-22T15:30:27.270 に答える