Delphi [델파이 문법] 클래스와 객체 #7
2012.04.30 19:19
■ Self
메소드의 구현에서 Self 식별자는 메소드가 호출된 객체를 참조합니다. 예를 들어, Classes 유닛에서 TCollection의 Add 메소드 구현은 다음과 같습니다.
Add 메소드는 항상 FItemClass 필드가 참조하는 클래스에서 Create 메소드를 호출합니다. 여기서 FItemClass 필드는 TCollectionItem의 자손입니다. TCollectionItem.Create는 TCollection 타입의 파라미터 하나만을 가지므로, Add는 Add가 호출된 TCollection 인스턴 스에 파라미터를 전달합니다. 이것은 다음 코드에서 설명합니다.
Self는 여러가지 이유로 유용합니다. 예를 들어, 클래스 타입에서 선언된 멤버 식별자는 클 래스 메소드 중 하나의 블럭에서 다시 선언될 수 있습니다. 이러한 경우, 원래의 멤버 식별자 를 Self.Identifier로 액세스할 수 있습니다.
클래스 메소드의 Self에 대한 내용은“클래스 메소드”를 참조하십시오.
메소드 바인딩
메소드는 정적(static), 가상(virtual) 또는 동적(dynamic)일 수 있습니다. 기본값은 static 입니다. 가상 메소드와 동적 메소드는 오버라이드될 수 있고 추상화(abstract)될 수 있습니 다. 이런 지정은 한 클래스 타입의 변수가 자손 클래스 타입의 값을 가지게 되면 역할을 하게 됩니다. 이들 지시어는 어떤 메소드가 호출되었을 때 어떤 구현이 선택될지를 결정합니다.
■ 정적 메소드
메소드는 기본적으로 정적입니다. 정적 메소드가 호출되면, 메소드가 호출된 클래스나 객체변수의 (컴파일 시점에서) 선언된 타입에 따라 선택될 구현이 결정됩니다. 다음 예제에서 Draw는 정적 메소드입니다.
위와 같이 선언했다면, 다음 코드는 정적 메소드를 호출했을 때의 동작을 보여줍니다. Figure.Draw에 대한 두 번째 호출에서, Figure 변수는 TRectangle 클래스의 객체를 참조 하지만 Figure 변수의 선언된 타입이 TFigure이기 때문에 TFigure의 Draw의 구현이 호출 됩니다.
참조링크
http://tech.devgear.co.kr/devgearbook
델파이 프로그래밍 언어 - 엠바카데로 저 | 박지훈 역 (2009년)