[英]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.