作者PsMonkey (痞子军团团长)
看板java
标题Re: [问题] 继承与物件使用的问题?
时间Tue May 21 11:30:33 2013
: 推 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
1F:→ eieio:还米花市咧,害我差点把一口水全喷电脑上了 05/21 13:56
2F:推 cuteclare:真相只有一个~就是pH 质 < 7~ 05/21 15:50