作者TonyQ (骨头)
看板java
标题Re: [问题] 继承会自动叫父类的建构式
时间Sat Jun 2 03:34:19 2007
※ 引述《edge2000 (好累)》之铭言:
: 另一个程式如下:
: class Son extends Father{
: Son(){
: ★
: this('A');
: System.out.println("B");
试着把上面两行对调看看如何? :P
: }
: Son(char c){
: super(c);
: }
: }
: 那为什麽结果不会是在上面★这个地方因为要自动呼叫父类建构子super();
: 而产生编译错误呢?
: 非常感谢回答的高手,
: 因为我观念好像都学的不太清楚。
把握一个原则
建构子里面要呼叫建构子一定要写在第一行,
不管是呼叫this或super都是。
如果没有呼叫就会自动补super() ,
相对的有呼叫就不会补super().
你所需要知道的就只有这样而已
★ → this('A') → super('A')
────────────────────────────────
举另一个情境
class Father {
Father(){
System.out.println("Father");
}
}
class Son extends Father{
Son(){
this('A');
System.out.println("B");
}
Son(char c){
System.out.println("C");
}
}
此时new Son =>
son() → this('A')
→ super() /* 因为 Son(char) 第一行没有建构子 */
--
这是个原则问题 , 目的是要确保父类别有被正确初始化.
--
▄▅▆▇███▇▆▅▄▃ ╰┼╯─╮ ╮
◥███████████◣ ╰┼╯=│=│
◥██████───────◣ *. ╯ ╯ ╯ の 物 语 .*
◥███████──────◣ ~ ◢◣ ◢◣
◥██████───────◤ ◥◤* 空白的世界.翼
*◥◤
◥██▁▂▃▄▅▆▇███▆▅▄▃▂▂
~telnet://tony1223.no-ip.info
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.27.68