[Public]
Public지시어는 특별한 제한을 갖고있지 않는 필드나 메소드를 나타낸다. 메소드가 Public으로 선언되면 그 클래스의 어떤 사용자도 사용할 수 있다.
[Private]
Private 지시어는 클래스가 정의된 Unit의 외부에서 접근하거나 알아보지 못하도록 프로시저, 함수나 필드를 정의하기 위해 사용된다. Private로 선언된 식별자의 범위는 선언을 포함하는 모듈로 제한된다. 같은 Unit에서 정의된 개체는 서로의 Private
필드와 메소드를 사용할 수 있다.
[Pretected]
Protected지시어는 Public과 Private중간형태로 파생 클래스이면 그 상위 클래스의 모든 정보를 참조하여 사용할 수 있다.
Unit UnitA;
…
type
TA = Class(Tobject);
Private
PriA : Integer;
Protected
ProA : integer;
Public
PubA : Integer;
Procedure Access;
End;
Procedure TA.Access;
Begin
PriA := 1; //
OK
ProA := 2; // OK
PubA := 3; // OK
End;
Unit UnitB;
Uses UnitA;
…
type
TB = Class(TA);
Public
Procedure Access;
End;
Procedure TB.Access;
Begin
PriA := 4; // 오류 발생 : Undeclared identifier
ProA := 5; // OK
PubA := 6; // OK
End;
UnitA에 선언된 TA클래스의 메소드에서는 TA클래스에서 선언된 모든 멤버(private,
protected, public)를 참조할 수 있다.
그러나 TA클래스에서 계승받아 UnitB에 선언된 TB클래스는 TB클래스가 후손 클래스이고 TA클래스는 선조 클래스이다. 후손 클래스에서는 선조 클래스의 멤버 중 Private영역의 멤버를 참조하지 못한다.
그리고, 또 한가지 유의해야 할 점은 TA클래스의 변수 A를 생성하여 사용한다고 가정할 때, TA클래스의 사용자는 TA클래스에서 public으로 선언한 멤버만을 참조할 수 있다.(아래)
Unit UserUnit;
uses UnitA;
…
procedure TForm1.Button1Click(Sender: Tobject);
var
A : TA;
Begin
A := TA.Create;
A.priA := 7; // 오류 발생 : Undeclared identifier
A.proA := 8; // 오류 발생 : Undeclared identifier
A.pubA := 9; // OK
A. Free;
End;
'공부방 > Delphi' 카테고리의 다른 글
[델파이] Project Source와 Unit Source의 구성 (0) | 2010.07.19 |
---|---|
[델파이] 폼 생성과 해제 (0) | 2010.07.15 |
[델파이] 오브젝트, 인스턴스, 클래스 (0) | 2010.07.14 |
[델파이] 프로시저와 함수 (1) | 2010.07.14 |
[델파이] Case 문법 (0) | 2010.07.14 |