全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1577
推到 Plurk!
推到 Facebook!

繼承與結構化???

 
Tomi
一般會員


發表:35
回覆:42
積分:15
註冊:2002-03-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-05-28 17:28:59 IP:61.13.xxx.xxx 未訂閱
各位先進 小弟由於不是資訊科系出生,有些觀念實在差 但要寫好程式有些觀念又偏要知道 請問有先進可以用淺顯的字句來解釋"繼承"、"結構化"嗎? 看書看不懂的可憐人! 發表人 - tomi 於 2002/05/28 17:30:31
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-05-29 15:15:17 IP:192.168.xxx.xxx 未訂閱
引言: 各位先進 小弟由於不是資訊科系出生,有些觀念實在差 但要寫好程式有些觀念又偏要知道 請問有先進可以用淺顯的字句來解釋"繼承"、"結構化"嗎?
我想您這個問題問得很大,沒人敢回答, 站長幫您起個頭! 我想繼承的觀念大家都有,但是要站上講台說個明白,就不是那麼容易的事! 我舉例來說:TFrom您知道吧,它是一個windows的標準視窗物件, 當您開一個New Form之後會出現: type TForm2 = class(TForm) private { Private declarations } public { Public declarations } end; 這代表建立一個物件型態TForm2,它會繼承所有TForm的特性, 我們稱為:TForm2繼承自TForm! 接下來有那位網友要接力? ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
linkolong
一般會員


發表:4
回覆:35
積分:12
註冊:2002-04-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-05-30 14:20:36 IP:61.70.xxx.xxx 未訂閱
例一: Type AObj=class(TObject) Get_X:string; procedure A(XString:String);overload; end; Type BObj=Class(AObj) //BObj繼承了AOBj,也繼承了AObj.A和 Get_X:string; Get_Y:string; procedure A(XString:String;YString:String);overload; end; ............ { AObj } procedure AObj.A(XString: String); begin Get_X:=XString; showmessage('AObj Called'); end; { BObj } procedure BObj.A(XString, YString: String); begin Get_X:=XString; Get_Y:=YString; showmessage('BObj Called'); end; procedure TForm1.Button1Click(Sender: TObject); var CObj:BObj; begin CObj:=BObj.Create; CObj.A('x'); CObj.A('x','y'); end; 這麼說在使用元件時,會發現有些元件,他有重複名稱的屬性或方法 這是因為"多載(Overload)",但多載不能在同一個類別中重複宣告兩次,所以會使用到繼承. 另例: A A1 A2 A3藥物可治感冒,B B1 B2 B3藥物可強身健體,c藥物可治痢疾 當有感冒時我們只要抓A A1 A2 A3藥物(X成藥) 而當感冒且身體虛時我們就要抓A A1 A2 A3 B B1 B2 B3藥物(X成藥 B B1 B2 B3=Y成藥) 那當感冒且身體虛時,並且身感痢疾那我們就要抓A A1 A2 A3 B B1 B2 B3 C了,但是如果我們用Y C藥物一樣可以達成效果,並且更有效率,那為什麼我們不用y C呢 相信你有看過類別繼承表,意思呢我想跟這個觀念差不多. 而你所說的"結構化"是不是"constructor"這個保留字呢 type TNewEdit=Class(Tedit) ... Public Constructor Create(AOwner:TComponent);override; ... Constructor TNewEdit.Create(AOwner:TComponent);override; begin //TComponent創立繼承Tedit所有類別 inherited Create(AOwner); Color:=clBlue; //更改TComponent中Color的值 ..... end; procedure Register; begin RegisterComponents('Sample',[TNewEdit]); //將新創立的TComponent名稱命名為TNewEdit,存放在元件庫Sample中 end; 我認為是當你要創新元件時,除了繼承原先類別的所有屬性外,但某些已經存在的屬性我們需賦予新的定義,我們就必須Constructor Create了
系統時間:2024-04-25 14:50:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!