作者TonyQ (沉默是金。)
看板java
标题Re: [问题] 多型请教
时间Wed Mar 24 14:58:33 2010
※ 引述《freewhat (这就是人生吗)》之铭言:
: class Building { }
: public class Barn extends Building
: {
: public static void main(String[] args)
: {
: Building build1 = new Building();
: Barn barn1 = new Barn();
: Barn barn2 = (Barn) build1; //1
: Object obj1 = (Object) build1; //2
: String str1 = (String) build1; //3
: Building build2 = (Building) barn1; //4
: }
: }
: 上面的程式,我知道 2 , 4 是对的,3是错的。
: 书上写1也是对的,可是这样 父类别实体转成子类别 有符合多型的精神吗?
: 总觉得1怪怪的,能开导我一下吗XD
通常会搭配 instanceof 做型别检测,
这种状况是发生於当某一个子类别具有特别的行为,
而且只有这个类别可以进行时才会这麽做。
比方说 JComponent -> JTextField
JPanel
JLabel
这个继承结构就可以清楚发现虽然他们有共通介面,
但是各自任务差距很大,某些操作时也需要分别操作。
但是他们仍然拥有放入Container元素的一致性,
简单来讲,就是同中有异,异中有同。
这种同异的区隔,就是多型所带来的弹性。
--
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: 114.136.167.169