Re: [問題] 繼承與物件使用的問題?
: 推 henry4343:應該是你講的這樣 我想做的是讓class繼承某個class 05/21 09:39
: → henry4343:然後class又可以擁有各自的物件讓我使用 05/21 09:41
: → henry4343:如果直接把每個class都宣告成物件就解決了 但這樣很麻煩 05/21 09:44
: → henry4343:所以才宣告父類別,然後在我要的地方建成我要的class 05/21 09:46
說實在的,我實在搞不懂你要的到底是什麼?
你這兩篇打了一堆字,不知道是我最近 PHP 寫多了還是怎麼的
(PHP:棍... 干我屁事)
我完全無法理會你的中文
像「把每個 class 都宣告成物件」這句話就很詭異
你這段推文用了許多次「物件」這個詞
那到底是「class 的 instance」的 object?
還是你在指所有 class 的老祖宗 java.lang.Object?
(這不是撒尿牛丸,你不能把所有東西都混在一起用同一個名詞去講)
你可不可以提供一個比較劇本的劇本(什麼鬼?)
至少把你的各個 class 取個名字什麼的
為了又避免說我在酸人,然後今天終於睡得比較飽了
我再來示範一次怎麼問問題
//// 隔山打牛,模擬原 po 問題開始 ////
我有幾個 class,假設叫 ChildA, ChildB, ChildC
希望它們共同繼承 Parent 這個 class
然後 ChildA, ChildB, ChildC 各自可以有自己獨特的 attribute/field
但是宣告的時候還是用 Parent 來宣告,這樣使用起來才方便
也就是說
Parent a = new ChildA();
Parent b = new ChildB();
Parent c = new ChildC();
System.out.println(a.attr.getClass());
System.out.println(b.attr.getClass());
System.out.println(c.attr.getClass());
三個印出來的 class name 要(可以)不一樣
////////
我先把醜話說在前面
無論我這段隔山打牛多麼曲解你的意思,你都不能說我猜錯了
因為你一開始就沒有辦法寫的讓人家懂
就好像你對別人說「我愛著你」,等到對方回答「那在一起吧」
才跟人家說「我的意思是『我礙著你』,你誤會我了」
如果你住在米花市的話,你大概馬上就會變成被害者了
好,如果問題是這樣的話
那麼第一個問題就是,為了確保 ChildA 等等
一定有 attr 這個 attribute/field
所以改成一定得透過 getter 來取得
System.out.println(a.getAttr().getClass());
其實到這邊,就已經算解決你的問題了
因為 Parent(假設是 abstract class,interface 也差不多)
abstract class Parent {
abstract Object getAttr();
}
這樣就可以強制 ChildA 等等一定要 implement 這個 method
至於 ChildA 們怎麼搞 getAttr() 就看個人高興
當然,你要更硬派(?)一點,也可以這樣,
不過 abstract class 限定就是了
而且萬一不知道 getAttr() 要幹麼的人會寫錯
abstract class Parent {
public Object attr;
Parent() {
genAttr();
}
abstract void getAttr();
}
至於 ChildA、ChildB、ChildC 的 attr 又希望在同一個家族裡頭
那就是另外一個故事了
=======
好吧,我承認我是來混文章數的
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.25.0.70
→
05/21 13:56, , 1F
05/21 13:56, 1F
推
05/21 15:50, , 2F
05/21 15:50, 2F
討論串 (同標題文章)