所以我有一個(gè)名為“EducationalBook”的類,它是“Book”類的子類?!癇ook”類是“PaperPublication”類的子類。在我的理解中,普通類的復(fù)制構(gòu)造函數(shù)(如“PaperPublication”)可以寫成如下:public class PaperPublication{ String title; double price; int nOP; //number of pages public PaperPublication(PaperPublication p) { title = p.title; price = p.price; nOP = p.nOP; }...但是,我不確定如何為僅具有該類本身參數(shù)的子類構(gòu)建復(fù)制構(gòu)造函數(shù)(例如:僅具有參數(shù) (Book b) 的“Book”類)。我只想要一個(gè)參數(shù)的原因是因?yàn)橛幸粋€(gè)規(guī)則,對于子類的復(fù)制構(gòu)造函數(shù),我必須調(diào)用父類的復(fù)制構(gòu)造函數(shù)(我相信這意味著使用“super()”對嗎?)。經(jīng)過一番研究,雖然我沒有找到明確的答案,但我是這樣構(gòu)建的:public class Book extends PaperPublication{ long ISBN; int issued; String author; public Book(Book b) { super(b.getTitle(), b.getPrice(), b.getNOP()); ISBN = b.ISBN; issued = b.issued; author = b.author; }...我什至不確定這是正確的方法,但它至少在編譯時(shí)沒有發(fā)生任何編譯階段錯誤。但是,對于 EducationalBook 類,我沒有任何想法來構(gòu)建復(fù)制構(gòu)造函數(shù)。由于 Java 不允許像 super.super() 這樣的東西,而且我不允許使用參數(shù)化構(gòu)造函數(shù),而只能使用父類的復(fù)制構(gòu)造函數(shù)。public class EducationalBook extends Book{ int edition; String speciality; public EducationalBook(EducationalBook e) { //??? no clue.. } public EducationalBook() // default constructor. is this right? {super();}}(還有一個(gè)問題,那個(gè)默認(rèn)構(gòu)造函數(shù)是對的嗎?)我覺得我對Java繼承的理解總體上很薄弱。對我有什么啟示嗎?
1 回答

HUWWW
TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
這比你想象的要容易。
的復(fù)制構(gòu)造函數(shù)Book:
public Book(Book b)
{
super(b);
ISBN = b.ISBN;
issued = b.issued;
author = b.author;
}
以及 的復(fù)制構(gòu)造函數(shù)EducationalBook:
public EducationalBook(EducationalBook b)
{
super(b);
edition = b.edition;
speciality = b.speciality;
}
添加回答
舉報(bào)
0/150
提交
取消