作者TonyQ (沉默是金。)
看板java
标题Re: [问题] 健构子传值到父类别再由其他类别取值!
时间Sat Dec 18 15:25:34 2010
※ 引述《blackmark (hunter)》之铭言:
: 小弟有三个Class 分别为A,B,C 。
: B继承A。
: 想由C传参数到A
: B的参数经由建构子传到A
: 在C class 内利用A new 出B的实体叫x
: x的方法取值 (小弟是Java新手可能表达不大清楚,希望前辈见量)
: 问题1
: 我取到的值为A Class预设的值 BB1
: 而非 B Class建构的 BB2
: 问题2
: 当我将A Class 的注1
: 跟B Class 的注2 该行移除後,
: AB Class都可一编译但C Class会编译失败!
:
: 真的搞不清楚原因!也爬过文了!在此跟前辈们请教!
: 程式码如下
: class A{
: String a1="AA1";
: String b1="BB1";
: A(){ }//注1
: A(String b1){this.b1=b1;}
: public void display(){}
: public void setData(String a){
: this.a1=a;
: }
: }
: class B extends A{
: String a2;
: String b2="BB2";
: B(){ }//注2
: B(String b2){super(b2);}
: public void display(){
: System.out.println("A.a1 =" + a1);
: System.out.println("透过B的健构值传到A.b1=" + b1);
: }
: }
: class C{
: public static void main(String args[]) {
: A x=new B();
: x.setData("CC1");
: x.display();
: }
: }
你的确没有建构 B(String) 啊
建构子只是让你决定你要从哪条管道建立,
不是你写了系统就会执行。
要达到你说的 你应该写成
B(){super(b2); }
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.70.152.16
※ 编辑: TonyQ 来自: 111.70.152.16 (12/18 15:26)
※ 编辑: TonyQ 来自: 111.70.152.16 (12/18 15:27)
1F:推 blackmark:感恩~~知道问题了 12/18 21:08