android, java 概念唔明

本帖最後由 twaiho2003 於 2015-10-15 14:42 編輯

我有個class a 有3個attribute.  
我想整多個class b ,  有曬class a 果3個attribute ,  另外再加多個attribute  .  即係class b extends a

我要做既動作係將一個class a instance 變做 class b,  再另外assign value 比多左果個attribute

成個動作要點做?
我試過
B b = (B) a;
b.setAttribute4("something");

syntax 比我過, 但係runtime行唔到, 我見android d button 都係咁cast.

冇人回既,  我google左陣, 我見有d人suggest 係subclass 個constructor 接收super class 的instance.  再重新init 過 所有attributes

TOP

本帖最後由 masseffect 於 2015-10-15 14:35 編輯
我有個class a 有3個attribute.  
我想整多個class b ,  有曬class a 果3個attribute ,  另外再加多個attri ...
twaiho2003 發表於 2015-10-15 12:15


唔太明,你唔個CLASS B 唔係比A 多一個attribute咩?
咁點解唔係class a extends b
a 係super class b 係sub class
a 係無b 多左嘅attribute,當然唔可以cast 做class b

同埋你點解會想一個a 變做b?
你係要佢變做b 定係想clone 一個類似a 嘅b 出嚟?

TOP

回覆 3# masseffect


    係wo, 打錯左,  唔怪得冇人回 , 改返先

TOP

冇人回既,  我google左陣, 我見有d人suggest 係subclass 個constructor 接收super class 的instance.  再重 ...
twaiho2003 發表於 2015-10-15 14:27


如果佢本身係要做class b 先做到嘅嘢,點解一開始你唔生個class b 嘅instance出嚟?

TOP

回覆 3# masseffect


    我想將一個class a instance copy, 再另外加一個attribute比佢.  所以先整個class B extends  A 出黎
但係果個attribute 同class a 無關, 所以唔擺入去

TOP

回覆 5# masseffect


    宜家d code
    public class B extends A {
       private String mSomeThing4;

        public B(A a) {
            super.setSomeThing1(a.getSomething1());
            super.setSomeThing2(a.getSomething2());
             super.setSomeThing3(a.getSomething3());
        }
      
        public void setSomeThing4(String s) {
           mSomeThing4 = s;
       }

}

TOP

咁你唔明嘅概念係咩

TOP

回覆 8# masseffect


    有冇D簡單方法可以COPY 一個 super class instance 內的values.  放落subclass instance .
cast 試左run唔到.  有冇個聰明d辦法
#7 果個方法雖然work 但係如果有好多attribute咁就有排打

TOP

本帖最後由 dsscss 於 2015-10-15 20:02 編輯

其實咁DESIGN即係唔熟OO CONCEPT.

以BUTTON黎做例子...
CLASS JBUTTON EXTENDS CLASS JCCOMPONENT
JBUTTON b = (JBUTTON)c 當然唔得.

應該係
JCOMPONENT c = (JCOMPONENT ) b;

不如講下想做乜...
點解會咁設計既...

TOP