Discussion:
[問題] 關於建構子與繼承
(时间太久无法回复)
阿薩布魯‧湖瀾
2006-09-11 07:37:13 UTC
Permalink
============================================================
class B extends A{
private int x,y;

B(int x, int y){
this.x=x;this.y=y;}

void printXY(){System.out.print("B: x=" + x + ", y=" + y);}

public static void main(String[] args){
A t = new B(1,2);
t.printXY();}

}

class A{
private int x,y;
A(int x, int y){
this.x=x;this.y=y;}
void printXY(){System.out.print("A: x=" + x + ", y=" + y);}
}
=============================================================

上面的程式碼為什麼會產生找不到class A的Constructor的compile error?
不是應該會有 Default Constructor 嗎?

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.225.190.55
耶耶
2006-09-12 08:02:13 UTC
Permalink
※ 引述《***@ptt.cc (阿薩布魯‧湖瀾)》之銘言:
: class A{
: private int x,y;
: A(int x, int y){

由於有任一明確的constructor存在, 不會有default constructor

: this.x=x;this.y=y;}
: void printXY(){System.out.print("A: x=" + x + ", y=" + y);}
: }
: =============================================================
: 上面的程式碼為什麼會產生找不到class A的Constructor的compile error?
: 不是應該會有 Default Constructor 嗎?

--
╭──── Origin:<不良牛牧場> bbs.badcow.com.tw (210.200.247.200)─────╮
│  ↘ Welcome to SimFarm BBS -- From : [210.64.83.245] │
╰◣◣◢ ◢◢《不良牛免費撥接→電話:40586000→帳號:zoo→密碼:zoo》 ◣◣◢ ─╯
2006-09-11 16:49:40 UTC
Permalink
Post by 阿薩布魯‧湖瀾
============================================================
class B extends A{
private int x,y;
B(int x, int y){
super(x, y);
因為class A已經有你寫的A(int x, int y),所以不會再幫你加上沒有參數的A()
所以如果你class B的建構子沒有自己呼叫super(x, y)的話,預設會幫你呼叫super()
此時就會找不到可以呼叫的constructor
解決方法是自己呼叫super(x, y)
Post by 阿薩布魯‧湖瀾
this.x=x;this.y=y;}
void printXY(){System.out.print("B: x=" + x + ", y=" + y);}
public static void main(String[] args){
A t = new B(1,2);
t.printXY();}
}
class A{
private int x,y;
A(int x, int y){
this.x=x;this.y=y;}
void printXY(){System.out.print("A: x=" + x + ", y=" + y);}
}
=============================================================
上面的程式碼為什麼會產生找不到class A的Constructor的compile error?
不是應該會有 Default Constructor 嗎?

--
※ Origin: 元智大學 風之塔 <bbs.yzu.edu.tw> 
※ From : 220-137-95-130.dynamic.hinet.net
※ X-Info: Re: [問題] 關於建構子與繼承
※ X-Sign: 12GB4T4ex0jrhG3/0Rx6 (06/09/12 0:49:40 )
继续阅读narkive:
Loading...