[问题] 继承,呼叫父类别方法的问题

楼主: s9209122222 (海海海)   2015-09-24 17:31:31
我下面这样打就是会出错
public class Test
{
public static void main(String[] args)
{
Book book=new Book(5);
book.DeathNote();
eroBook erobook=new eroBook(50);
erobook.ERO();
}
}
class Book
{
private int pages;
public Book(int pages)
{
setPages(pages);
}
public void DeathNote()
{
System.out.print("DeathNote is on page ");printPage();
}
public void printPage()
{
System.out.println(this.pages);
}
public void setPages(int pages)
{
this.pages=pages;
}
}
class eroBook extends Book
{
public eroBook(int pages)
{ //就是这边出问题!!
setPages(pages);
}
public void ERO()
{
System.out.print("ero page is on page ");printPage();
}
}
结果:
Test.java:34: error: constructor Book in class Book cannot be applied to given types;
{
^
required: int
found: no arguments
reason: actual and formal argument lists differ in length
实在搞不懂错在哪边,看书上也是这样呼叫父类别方法的,不过我把eroBook 的建构子里面
改用Super 去呼叫父类别就没问题,或者直接删除Book的建构子,不给Book初始值也可以顺
利通过编译,请问这究竟错在哪边呢?
拜托各位了,有这个疙瘩在这边我根本没办法继续往下读﹍
※ 编辑: s9209122222 (122.117.207.31), 09/24/2015 17:52:34
楼主: s9209122222 (海海海)   2015-09-24 17:55:00
结果我多创个Book空的建构子就OK了,为什么啊!!!
作者: jay80915 (一种感觉)   2015-09-24 18:15:00
子类别constructor会去呼叫super()
楼主: s9209122222 (海海海)   2015-09-24 19:50:00
所以子类别有用建构子,父类别就一定要有个没输入参数的父类别囉?更正,没输入参数的建构子囉?
作者: cha122977 (CHA)   2015-09-24 19:54:00
一定要用父类别建构子 但没限制要无参数你用super(pages)就可以了 你的例子也是这样用比较好完全不写的话会默认使用无参数的但你的例子中Book不提供无参数的 所以默认找不到就挂了
楼主: s9209122222 (海海海)   2015-09-24 20:20:00
了解,感谢
作者: ssccg (23)   2015-09-25 09:57:00
平常没有写其他建构子的话,compiler会自己产生无参数的但是有别的建构子就不会,就要自己加

Links booklink

Contact Us: admin [ a t ] ucptt.com