好的,这是问题!
我有一个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 ? :(
答案 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