簡體   English   中英

覆蓋從庫到不同項目的方法

[英]Override a method from library to different projects

我將我的主要代碼設置為一個項目,並引用了其他兩個項目(lite和pro)。

這就是我希望Quiz類尋找lite的方式:

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

這就是我希望Quiz類尋找專業人士的方式:

class Quiz {
    public Quiz {
        object1();
        object2();
        object3();
        object4();
        object5();
        object6();
        object7();
        object8();
    }
}

為此,我是否需要將類Quiz設置為在庫中進行抽象,然后定義它們,但是我希望在lite和pro項目中使用它們? 還是應該將庫定義為上面的第一個Quiz示例,然后嘗試在專業版中以某種方式覆蓋它?

編輯

根據下面的評論,這是實際代碼的片段。

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"));
}

假設由於問題不清楚,您是在指代構造函數

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

class QuizForPro extends Quiz{
    public QuizForPro() {
        super();
        object5();
        object6();
        object7();
        object8();
    }
}

您可以在其他庫Pro擴展Quiz ,然后提供對您的庫有意義的更專業的實現。 這就是為什么在OOP中可以使用專門化的原因,以便您可以擴展父類的功能並提供一些其他行為(在您的情況下,這是在arraylist中添加更多元素)。

更新:查看片段,您正在使用構造函數添加問題,這將是一個糟糕的地方。

您應該提供類似addQuestion(...), removeQuestion(...), clearQuestions(...) 這些在這里會更有意義。

同意納倫德拉的回答,它應該起作用。 但是我想下面的設計就足夠了。 {再次取決於最終產品的實際要求}

使用數組列表定義作為類進行測驗以存儲數據,但構造函數中不進行初始化。 它提供了添加問題的方法。

public final class Quiz {
  ArrayList<Question> exodus = new ArrayList<Question>(200);
  public Quiz() { }
  public addQuestions(List<Question> questions) {
     // ... implementation here ... 
  }
}

我將使用lite和pro作為客戶端類中的成員初始化,或者提供一個QuizHelper類來創建這兩種類型的對象並將其返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM