繼承與結構化??? |
|
Tomi
一般會員 發表:35 回覆:42 積分:15 註冊:2002-03-13 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 各位先進 小弟由於不是資訊科系出生,有些觀念實在差 但要寫好程式有些觀念又偏要知道 請問有先進可以用淺顯的字句來解釋"繼承"、"結構化"嗎?我想您這個問題問得很大,沒人敢回答, 站長幫您起個頭! 我想繼承的觀念大家都有,但是要站上講台說個明白,就不是那麼容易的事! 我舉例來說: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 發送簡訊給我 |
例一:
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了
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |