为了账号安全,请及时绑定邮箱和手机立即绑定

Java - 如何为子类的子类调用复制构造函数?

Java - 如何为子类的子类调用复制构造函数?

BIG阳 2021-11-11 18:05:29
所以我有一个名为“EducationalBook”的类,它是“Book”类的子类。“Book”类是“PaperPublication”类的子类。在我的理解中,普通类的复制构造函数(如“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;    }...但是,我不确定如何为仅具有该类本身参数的子类构建复制构造函数(例如:仅具有参数 (Book b) 的“Book”类)。我只想要一个参数的原因是因为有一个规则,对于子类的复制构造函数,我必须调用父类的复制构造函数(我相信这意味着使用“super()”对吗?)。经过一番研究,虽然我没有找到明确的答案,但我是这样构建的: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;    }...我什至不确定这是正确的方法,但它至少在编译时没有发生任何编译阶段错误。但是,对于 EducationalBook 类,我没有任何想法来构建复制构造函数。由于 Java 不允许像 super.super() 这样的东西,而且我不允许使用参数化构造函数,而只能使用父类的复制构造函数。public class EducationalBook extends Book{    int edition;    String speciality;    public EducationalBook(EducationalBook e)    {        //??? no clue..    }    public EducationalBook() // default constructor. is this right?    {super();}}(还有一个问题,那个默认构造函数是对的吗?)我觉得我对Java继承的理解总体上很薄弱。对我有什么启示吗?
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

这比你想象的要容易。


的复制构造函数Book:


public Book(Book b)

{

  super(b);

  ISBN = b.ISBN;

  issued = b.issued;

  author = b.author;

}

以及 的复制构造函数EducationalBook:


public EducationalBook(EducationalBook b)

{

  super(b);

  edition = b.edition;

  speciality = b.speciality;

}


查看完整回答
反对 回复 2021-11-11
  • 1 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信