Java 将方法从库重写到不同的项目

Java 将方法从库重写到不同的项目,java,android,eclipse,shared-libraries,overriding,Java,Android,Eclipse,Shared Libraries,Overriding,我将我的主代码设置为一个项目,另外两个项目(lite和pro)引用它 这就是我希望测验类查找lite的方式: class Quiz { public Quiz { object1(); object2(); object3(); object4(); } } 这就是我希望测验类如何寻找专业版: class Quiz { public Quiz { object1(); obj

我将我的主代码设置为一个项目,另外两个项目(lite和pro)引用它

这就是我希望
测验
类查找lite的方式:

class Quiz {
    public Quiz {
        object1();
        object2();
        object3();
        object4();
    }
}
这就是我希望
测验
类如何寻找专业版:

class Quiz {
    public Quiz {
        object1();
        object2();
        object3();
        object4();
        object5();
        object6();
        object7();
        object8();
    }
}
要实现这一点,我是否需要在库中将class
quick
设置为abstract,然后在lite和pro项目中以我希望的方式定义它们?或者我应该将库定义为上面的第一个
测验
示例,然后在pro版本中以某种方式覆盖它吗

编辑

根据下面的注释,这里是一段实际代码

public class Quiz {

    ArrayList<Question> exodus = new ArrayList<Question>(200);

    public Quiz() {

        exodus.add(new Question("Aaron", "Abraham", "Jacob", "Joseph", 0, "What was the name of Moses' brother?", -1, "Exodus 7:1-2"));
        exodus.add(new Question("5", "10", "7", "12", 1, "How many plagues did God send on Egypt?", -1, "Exodus 7-12"));
        exodus.add(new Question("Pharaoh's maid", "Pharaoh's wife", "Pharaoh's daughter", "Pharaoh's mother", 2, "Who found baby Moses in a basket along the riverside of the Nile river?", -1, "Exodus 2:3-5"));
        exodus.add(new Question("Hail", "Frogs", "Boils", "Flies", 1, "What was the 2nd plague?", -1, "Exodus 8:2"));
        exodus.add(new Question("Darkness for 3 days", "All water turns to blood", "Boils", "Flies", 3, "What was the 4th plague?", -1, "Exodus 8:24"));
        exodus.add(new Question("Frogs", "Boils", "Hail", "Lice", 1, "What was the 6th plague?", -1, "Exodus 9:10"));
        exodus.add(new Question("Boils", "All livestock dies", "Lice", "Locusts", 3, "What was the 8th plague?", -1, "Exodus 10:14"));
        exodus.add(new Question("Darkness for 3 days", "Death of firstborn", "All water turns to blood", "All livestock dies", 1, "What was the 10th plague?", -1, "Exodus 12:29"));
}
公开课测验{
ArrayList exodus=新ArrayList(200);
公开问答{
出埃及记。增加(新问题(“亚伦”、“亚伯拉罕”、“雅各”、“约瑟”,0,“摩西的兄弟叫什么名字?”,-1,“出埃及记7:1-2”);
《出埃及记》补充(新问题(“5”、“10”、“7”、“12”、1,“上帝给埃及带来了多少灾难?”,-1,“出埃及记7-12”);
出埃及记。增加(新问题(“法老的女仆”、“法老的妻子”、“法老的女儿”、“法老的母亲”,2,“谁在尼罗河边的篮子里发现了摩西的婴儿?”,-1,“出埃及记2:3-5”);
出埃及记。补充(新问题(“冰雹”,“青蛙”,“疖子”,“苍蝇”,1,“第二次瘟疫是什么?”,-1,“出埃及记8:2”);
出埃及记。补充(新问题(“黑暗三天”,“所有的水都变成血”,“沸腾”,“苍蝇”,3,“第四次瘟疫是什么?”,-1,“出埃及记8:24”);
出埃及记。增加(新问题(“青蛙”,“疖子”,“冰雹”,“虱子”,1,“第六次瘟疫是什么?”,-1,“出埃及记9:10”);
出埃及记补充(新问题(“疖子”,“所有牲畜死亡”,“虱子”,“蝗虫”,3,“第8次瘟疫是什么?”,-1,“出埃及记10:14”);
出埃及记。补充(新问题(“黑暗三天”,“长子死亡”,“所有的水变成血”,“所有的牲畜死亡”,1,“第十次瘟疫是什么?”,-1,“出埃及记12:29”);
}

假设您指的是施工人员,因为问题不清楚

class Quiz {
    public Quiz (){
        object1();
        object2();
        object3();
        object4();
    }
}

class QuizForPro extends Quiz{
    public QuizForPro() {
        super();
        object5();
        object6();
        object7();
        object8();
    }
}
您可以在其他库中扩展
Pro
中的
quick
,然后提供对您的库有意义的更专门的实现。这就是为什么在OOP中可以使用专门化,以便您可以扩展父类功能并提供一些附加行为(在您的例子中,这是在arraylist中添加更多元素)

更新: 查看您正在使用构造函数添加问题的代码段,这是一个不好的地方


您应该提供一个类似于
addQuestion(…)、removeQuestion(…)、clearQuestions(…)
的方法。这些方法在这里更有意义。

假设您引用的是构造函数,因为问题不清楚

class Quiz {
    public Quiz (){
        object1();
        object2();
        object3();
        object4();
    }
}

class QuizForPro extends Quiz{
    public QuizForPro() {
        super();
        object5();
        object6();
        object7();
        object8();
    }
}
您可以在其他库中扩展
Pro
中的
quick
,然后提供对您的库有意义的更专门的实现。这就是为什么在OOP中可以使用专门化,以便您可以扩展父类功能并提供一些附加行为(在您的例子中,这是在arraylist中添加更多元素)

更新: 查看您正在使用构造函数添加问题的代码段,这是一个不好的地方


您应该提供一种类似于
addQuestion(…)、removeQuestion(…)、clearQuestions(…)
的方法。这些方法在这里更有意义。

同意Narendra的答案,它应该可以工作。但是我想下面的设计应该足够了。{同样取决于最终产品的实际需求}

使用数组列表定义作为类进行测验,以存储数据,但在构造函数中不进行初始化。它提供了添加大量问题的方法

public final class Quiz {
  ArrayList<Question> exodus = new ArrayList<Question>(200);
  public Quiz() { }
  public addQuestions(List<Question> questions) {
     // ... implementation here ... 
  }
}
公开期末考试{
ArrayList exodus=新ArrayList(200);
公开测验(){}
公共问题(列表问题){
//…在这里执行。。。
}
}

我将在客户端类中使用lite和pro作为成员初始化,或者提供一个QuizHelper类来创建这两种类型的对象并返回它。

同意Narendra的答案,它应该可以工作。但是我想下面的设计应该足够了。{再次取决于最终产品的实际需求}

使用数组列表定义作为类进行测验,以存储数据,但在构造函数中不进行初始化。它提供了添加大量问题的方法

public final class Quiz {
  ArrayList<Question> exodus = new ArrayList<Question>(200);
  public Quiz() { }
  public addQuestions(List<Question> questions) {
     // ... implementation here ... 
  }
}
公开期末考试{
ArrayList exodus=新ArrayList(200);
公开测验(){}
公共问题(列表问题){
//…在这里执行。。。
}
}

我将在客户端类中使用lite和pro作为成员初始化,或者提供一个QuizHelper类来创建这两种类型的对象并返回它。

代码不是很清楚。“公共测验{”实际上是指构造函数吗?(公共测验(){)您正在初始化该构造函数中的不同对象?我添加了一段实际代码以帮助澄清。在实际的
quick
类中,大约有500个
Question
对象。代码不是很清楚。“public quick{”实际上是指构造函数吗?(public quick(){)您正在初始化该构造函数中的不同对象?我添加了一段实际代码以帮助澄清。在实际的
quick
类中,大约有500个
Question
对象。因此,如果我理解正确,我可以在我的库中定义
quick
类,然后在我的专业版中,我可以扩展
quick
,调用
super()
并添加更多对象。这样,我的lite项目就不必添加任何内容。听起来对吗?我会去整合它并报告结果。是的,这似乎是正确的。我对你的问题不太清楚,所以不得不假设一些细节。但这似乎是正确的。它要求导入
导入matt.lyons.bibletrivia.Question;