程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 理解Delphi的類(十一) - 深入類中的方法(2)

理解Delphi的類(十一) - 深入類中的方法(2)

編輯:Delphi

//方法重定義時, 避免編譯提示的辦法

{辦法1: 使用 reintroduce 指示字}TBass = class
 procedure Proc; virtual;
end;
TChild = class(TBass)
 procedure Proc; reintroduce;
end;
{辦法2: 使用編譯器指令}
TBass = class
 procedure Proc; virtual;
end;
{$WARNINGS OFF}
TChild = class(TBass)
 procedure Proc; virtual;
end;
{$WARNINGS ON}
[3] - 方法在實現時的參數省略

unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
 end;
TBass = class
 function Fun1(x,y: Integer): Integer; virtual; {Fun1 有 virtual 指示字}
 function Fun2(x,y,z: Integer): Integer;    {Fun2 有三個參數、一個返回 值}
end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
{ TBass }
function TBass.Fun1(x, y: Integer): Integer; {方法實現時, 不能帶 virtual 等指 示字}
begin
 Result := x + y;
end;
function TBass.Fun2; {方法實現時可以只有函數名; 如果帶參數和返回值, 必須和定義 時一樣}
begin
 Result := x + y + z;
end;
end.

[4] - 訪問限制(或者叫可見性)

//下面說的數據成員不僅僅指方法

TMyClass = class(TObject)

function Fun1: string; {公共區域的數據成員在默認狀態下會歸於 published 區}

//所謂默認狀態就是編譯指令為{$M+}, 如果是{$M-}這些數據成員會歸於 public 區 private
 function Fun2: string; {private 區的數據成員只能在類內訪問}
protected
 function Fun3: string; {protected 區的數據成員只給自己或子孫類訪問}
public
 function Fun4: string; {public 區的數據成員是公開的, 能夠給子孫類或實例化後 對象公開使用}
published
 function Fun5: string; {published 區的數據成員首先類似 public; 它同時屬於 RTTI 信息}
 //譬如我們在 Object Inspector 窗口能夠見到的屬性、方法、事 件都是屬於 published 區的

end;

//Delphi 還有一個叫"友元類"的概念, 就是指在一個單元內的類直接是沒 有訪問限制的, 哪怕是在 private 區.{現在的解決方案是使用 strict 保留字}
TMyClass = class(TObject)
 function Fun1: string;
strict private
 function Fun2: string; {strict private 區的數據成員只能是類內部訪問}
strict protected
 function Fun3: string; {strict protected 區的數據成員只能是類或子孫類訪問}
public
 function Fun4: string;
published
 function Fun5: string;
end;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved