扩展class + new参数

时间:2012-11-22 15:16:19

标签: java oop extends

好的,这是问题!

我有一个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 个答案:

答案 0 :(得分:2)

只需在 GetSecondStuff 类中创建一个新字段,然后在构造函数中指定它。然后你可以在overriden方法中使用newData。

答案 1 :(得分: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
    }
  }

修改

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

答案 2 :(得分: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
   }
}

答案 3 :(得分: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