Java 扩展一个类+;新参数

Java 扩展一个类+;新参数,java,oop,extends,Java,Oop,Extends,好了,问题来了 我有一节课 public class GetStuff { public GetStuff(String data) { // stuff } } 在这个类中,我有一个方法getMyStuff(),它调用第二个方法: getAllMyStuff(); 现在,我想扩展我的课程,因此我将做一个: public class GetSecondStuff extends GetStuff { public GetSecondStuff(St

好了,问题来了

我有一节课

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保存在一个实例变量中。通过此操作,您可以在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
    }
  }
编辑


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

将变量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
    }
  }
编辑


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

只需在GetSecondStuff类中创建一个新字段,并在构造函数中分配它。然后你可以在重写的方法中使用新数据。

只需创建一个新字段即可在GetSecondStuff类中,并在构造函数中分配它。然后可以在重写的方法中使用newData。

扩展第一个方法的类可能有自己的属性,请使用它们

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
   }
}

扩展第一个类的类可能有自己的属性,请使用它们

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
   }
}
输出:

GetStuff

获取第二个东西

新数据:1

输出:

GetStuff

获取第二个东西



新数据:1

您的类名应该是名词。@AdamArold我使用此快速名称是为了在此处快速暴露问题,但感谢您的注释您的类名应该是名词。@AdamArold我使用此快速名称是为了在此处快速暴露问题,但感谢注释如果我添加私有字符串newData;我可以在只有在super()和函数getAllMyStuff()从super()调用之后,构造函数才起作用:e:(或者我理解错了?基本上,但是你的构造函数需要一个
int
好吧,你是对的-但是如果发生这种情况,你应该考虑你的设计。否则,你可以做super()的事情)如果我添加私有字符串newData,我只能在super()之后在构造函数中使用它,并且函数getAllMyStuff()是从super()调用的,所以它没有帮助:e:(或者我理解错了?基本上,但是你的构造函数需要一个
int
好吧,你是对的-但是如果发生这种情况,你应该考虑一下你的设计。否则,你可以自己在构造函数中做super()的事,但这也是一个糟糕的设计。问题是,行_newData=newData;在super()之后执行。)…我试图覆盖它的方法是在调用super()时执行的。我不明白你的问题。似乎你需要修改基类,而不是它的扩展。问题是行_newData=newData;在super()之后执行,而我试图覆盖它的方法是在调用super()时执行的。我不明白你的问题。似乎你需要修改基类,而不是它的扩展。问题是行“newData=_newData;”是在super()之后执行的,而我试图覆盖它的方法是在调用super()时执行的。因此,在那里使用newData将产生一个NullPointerException问题是行“newData=_newData;”在super()之后执行,我试图覆盖它的方法在调用super()时执行.因此,使用新数据将产生一个NullPointerException。它来自不同的类别。你是什么意思?如果你能给我们一个更具体的例子,说明你想要实现的目标,也许会有所帮助。因此,我们可以给你更详细的提示?它来自不同的类别。你的意思是什么?如果你能给我们一个更具体的例子,也许会有所帮助你想要达到的目标是什么?那么我们可以给你更详细的建议吗?