線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:791
推到 Plurk!
推到 Facebook!

Private 與 繼承 的問題

尚未結案
s07452
一般會員


發表:20
回覆:16
積分:7
註冊:2003-11-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-17 16:36:59 IP:61.56.xxx.xxx 未訂閱
  TA= class(TObject)
  private
    p_i: integer;
    ii: integer;
  public
    procedure showmsg;
  published
    property now_i: integer read p_i write p_i;
  end;      TB= class(TA)
  private
  public
    constructor Create;
    destructor Destroy; override;
  end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  BB:= TB.Create;
  BB.now_i:= 5;   //寫在private但宣告property也一樣可以使用?
  BB.showmsg;
  BB.ii:= 20;     //何以這邊可以使用父物件的private變數
  showmessage(InttoStr(BB.ii));  //正確執行沒有error唷
end;
 
PS: Delphi 5
James
高階會員


發表:10
回覆:290
積分:220
註冊:2002-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-17 16:47:28 IP:218.170.xxx.xxx 未訂閱
兩個問題 1.因為你是存取 published 的 property , 所以當然可以囉 2.因為你再寫在同一個 Unit 中, 在這種情況下是可以的 , 但不建議這樣寫
seaturn99
版主


發表:69
回覆:427
積分:214
註冊:2003-08-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-20 11:36:13 IP:203.66.xxx.xxx 未訂閱
引言:
  TA= class(TObject)
  private
    p_i: integer;
    ii: integer;
  public
    procedure showmsg;
  published
    property now_i: integer read p_i write p_i;
  end;      TB= class(TA)
  private
  public
    constructor Create;
    destructor Destroy; override;
  end;    procedure TForm1.FormCreate(Sender: TObject);
begin
  BB:= TB.Create;
  BB.now_i:= 5;   //寫在private但宣告property也一樣可以使用?
  BB.showmsg;
  BB.ii:= 20;     //何以這邊可以使用父物件的private變數
  showmessage(InttoStr(BB.ii));  //正確執行沒有error唷
end;
 
PS: Delphi 5
s07452 您好 : 在同一個 Unit 內,每個在 Unit 宣告之 Class 都可以相互存取 Private 區段的變數,Function 與 Procedure ... 您可以在另外一個 Unit 使用該 Class ,便不能存取 Private 區段 了.. ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ---- 發表人 - SouthWind 於 2004/04/20 11:43:01
系統時間:2024-05-17 17:56:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!