Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

繼承的特性 ??

0 views
Skip to first unread message

Cc..

unread,
Apr 8, 2000, 3:00:00 AM4/8/00
to
> 我想,你誤解了繼承的意思了吧....
> 所謂的繼承,是指將具有相同特性的物件加以衍生與延長
> 其精隨就在於 :
> B is a kind of A ,則 B 可以繼承 A
> 你所提的例子
> 1.汽車是一種車子 ..... O
> 2.果樹林是一種樹林與果子 ....... X
> 應該說 果樹林 是一種樹林
> 且 果樹林 是一個含有果子的樹林
他應該沒有誤解吧...
只是完整的說...
果樹林繼承了樹林但又包含了果子...
所以果樹林的'樹林'還是有繼承樹林呀..

> 3.整數陣列是一種整數與陣列...... X
> 應該說是 整數陣列 是一種陣列
> 且 整數陣列 是一個 Items 為 整數的陣列
> that is all ....
--
[1;33m※ Origin: [36m奇摩 大摩域 [37m<telnet://bbs.kimo.com.tw> [m
[1;35m◆ From: [1;32m163.32.115.61 [m

破窗破窗...滿天下...

unread,
Apr 11, 2000, 3:00:00 AM4/11/00
to
> > 車子是一種交通工具,所以車子可以動,可以載東西。
> > 汽車是車子的一種,所以汽車可以動,可以載東西...
> > 那是不是我們就可以說,汽車繼承了車子的特性呢 ??
> > 那另一個例子...
> > 果樹林是樹林和果子的繼承嗎 ??
> > 答案是錯的....
^^^^^^^^^^^^^^ 這裡不就說,這個答案是錯的嗎 ??

> > 整數陣列是整數和陣列的多重繼承嗎 ??
> > 也不是 ?!
^^^^^^^ 這裡也是說錯的呀 !!

> > 那是什麼原因呢 ??
> > 大家來提出一些看法吧 !!

我想...原作是要讓大家討論一下一些繼承的狀況吧 ?
有時候,繼承和使用...會讓人搞不清的!

> 我想,你誤解了繼承的意思了吧....
> 所謂的繼承,是指將具有相同特性的物件加以衍生與延長
> 其精隨就在於 :
> B is a kind of A ,則 B 可以繼承 A
> 你所提的例子

--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: win95-17.cis.scu.edu.tw

自是溫柔最傷人

unread,
Apr 12, 2000, 3:00:00 AM4/12/00
to
> 我想...原作是要讓大家討論一下一些繼承的狀況吧 ?
> 有時候,繼承和使用...會讓人搞不清的!

恩...的確如此

有時繼承的使用,並不遵守現實上的觀念

例如:

圓是一種橢圓

所以繼承時,應該要先寫一個橢圓
然後寫一個圓去繼承橢圓

現實中是如此
但實際寫程式時
我們並不這麼做....

因為 圓 只要有

1.圓心
2.半徑

而橢圓要

1.圓心
2.寬
3.高

所以 橢圓 比 圓 多了一個 data member
故我們會寫成

橢圓繼承了圓

這雖然是個比較特殊的例子
但也在 繼承 中常常見到

PS.之前的 DeathVader 就是我啦....
--
[1;32m※ Origin: [33m元智大學 風之塔 [37m<bbs.yzu.edu.tw> [m
[1;32m※ From : [36mip-lab-10.cse.yzu.edu.tw [m

"約書亞的時代來臨了"

unread,
Apr 12, 2000, 3:00:00 AM4/12/00
to
On 12 Apr 2000 06:36:18 GMT, Leaf...@bbs.yzu.edu.tw (自是溫柔最傷人)
wrote:


>有時繼承的使用,並不遵守現實上的觀念
>
>例如:
>圓是一種橢圓
>
>所以繼承時,應該要先寫一個橢圓
>然後寫一個圓去繼承橢圓

這種繼承的方式有可能會違反 Liskov-Substitution Principle

>所以 橢圓 比 圓 多了一個 data member
>故我們會寫成
>
>橢圓繼承了圓

這種方式只是為了繼承圓的 implementation 更是錯誤示範.
既然橢圓不是圓就不該繼承圓.

在這個情形下最好圓跟橢圓不要互相繼承, 但可以讓兩者
有一個共同繼承的 base class.

四眼的王蟲
--
摩西帶領大家離開埃及
約書亞帶領大家進入那應許之地

自是溫柔最傷人

unread,
Apr 12, 2000, 3:00:00 AM4/12/00
to
> >有時繼承的使用,並不遵守現實上的觀念
> >例如:
> >圓是一種橢圓
> >所以繼承時,應該要先寫一個橢圓
> >然後寫一個圓去繼承橢圓

> 這種繼承的方式有可能會違反 Liskov-Substitution Principle

> >所以 橢圓 比 圓 多了一個 data member
> >故我們會寫成
> >橢圓繼承了圓

> 這種方式只是為了繼承圓的 implementation 更是錯誤示範.
> 既然橢圓不是圓就不該繼承圓.
> 在這個情形下最好圓跟橢圓不要互相繼承, 但可以讓兩者
> 有一個共同繼承的 base class.


恩...王蟲兄所言甚是

當初上 侯 Sir 開的課時, 就覺得他舉這個例子怪怪ㄉ
但一直找不到什麼說法來解釋
現在總算一語道破了說

也就是說
繼承樹就會變成


Shape
|
-------------------
| |
Basic Rect Basic Ellipse
| |
-------------- ----------------
| | | |
Rect Square Circle Ellipse

恩恩恩恩.....
可是這樣會不會增加管理的複雜度啊....


--
[1;32m※ Origin: [33m元智大學 風之塔 [37m<bbs.yzu.edu.tw> [m

[1;32m※ From : [36mip-lab-9.cse.yzu.edu.tw [m


O.O

unread,
Apr 13, 2000, 3:00:00 AM4/13/00
to
: > 有時候,繼承和使用...會讓人搞不清的!
: 恩...的確如此
: 有時繼承的使用,並不遵守現實上的觀念
的確 !! 我們平常所認為的繼承應該是由物件來劃分類別 !!
但是在 programming時,卻是先作類別由類別再來產生物件 !!
這是不太相同的地方 !!

現實的生活中是由物件去分類,而 progrmaming 是無中生有的 !!

: 然後寫一個圓去繼承橢圓


: 現實中是如此
: 但實際寫程式時
: 我們並不這麼做....
: 因為 圓 只要有
: 1.圓心
: 2.半徑
: 而橢圓要
: 1.圓心
: 2.寬
: 3.高

: 所以 橢圓 比 圓 多了一個 data member
: 故我們會寫成
: 橢圓繼承了圓
: 這雖然是個比較特殊的例子
: 但也在 繼承 中常常見到

這個例子舉的很棒 !!
在 programming 時都是由最基礎開始設計,由基礎來衍生出更
進一步的型態,但也常因為如此,會將使用和繼承給搞混了 !!

--
[1;34m孤身流浪到 Taipei 的東吳資科轉學生... [0m

[1;5;33mGene [0m

--
※ Origin: 程式設計樂園 ◆ From: pc014.r2206.scu.edu.tw

0 new messages