Data data = new Data("path"); //I read data from excel and save. This code is in Main.
public abstract class Generator{
public abstract double[][] generate();
//here I need reference - data
}
public class GeneratorA extends Generator{
public double[][] generate(){
//first implementation - I want to work with data
}
}
public class GeneratorB extends Generator{
public double[][] generate(){
//second implementation - I want to work with data
}
}
我需要的是将引用(数据)传递给抽象类Generator。我可以在GeneratorA / GeneratorB的构造函数中传递引用,但是我有更多的子类,效率很低。有没有办法如何将参考数据传递给abstr。类生成器?我只想继承类Generator的引用... 谢谢!
答案 0 :(得分:1)
您必须在抽象类中添加构造函数。然后你只需要在子类构造函数中调用super(data)
。
见下面的代码:
public abstract class Generator{
Data data;
public Generator(Data data) {
this.data = data;
}
public abstract double[][] generate();
//here I need reference - data
}
}
public class GeneratorA extends Generator{
public GeneratorA(Data data) {
super(data);
}
public double[][] generate(){
//first implementation - I want to work with data
}
}
public class GeneratorB extends Generator{
public GeneratorB(Data data) {
super(data);
}
public double[][] generate(){
//second implementation - I want to work with data
}
}
答案 1 :(得分:0)
抽象类可以包含非抽象方法和构造函数。
public abstract class Generator{
Generator(....)
{
//set here
}
public abstract double[][] generate();
//here I need reference - data
}
您可以使用构造函数来设置子类中的值。
OR
如果由于某种原因你不想将构造函数/非抽象方法添加到抽象类Generator
,你可以再添加一个扩展Generator
的类和其他子类可以扩展这个新课程。
您可以在新类中编写一个方法来设置值并使用它。
答案 2 :(得分:0)
在您的描述中,您似乎需要在所有Generator对象中使用相同的数据引用,在这种情况下,您可以将数据存储为抽象类中的静态字段,并访问子类的对象,如:
public abstract class Generator{
static Data data;
public static void setData(Data data){
Generator.data=data;
}
public abstract double[][] generate();
}
Data data = new Data("path");
Generator.setData(data);
public class GeneratorA extends Generator{
public double[][] generate(){
//here you can work with data..
}
}