1

好的,问题来了!

我有一堂课 GetStuff

public class GetStuff {

   public GetStuff(String data) {
       // stuff
   }

}

在这个类中,我有一个方法 getMyStuff() 调用第二种方法:

getAllMyStuff();

现在,我想扩展我的课程,所以我会做一个:

public class GetSecondStuff extends GetStuff {

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

}

在第二个类中,我将覆盖我的 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
    }
  }

编辑

在其中一条评论中,我读到您想在超类中使用子类参数。那么你能告诉我为什么新参数不在超类中吗?

于 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);      
    }

}

输出 :

获取材料

GetSecondStuff

新数据:1

于 2012-11-22T15:30:27.270 回答