■ Self

메소드의 구현에서 Self 식별자는 메소드가 호출된 객체를 참조합니다. 예를 들어, Classes 유닛에서 TCollection의 Add 메소드 구현은 다음과 같습니다.

Object_7_1.png

Add 메소드는 항상 FItemClass 필드가 참조하는 클래스에서 Create 메소드를 호출합니다. 여기서 FItemClass 필드는 TCollectionItem의 자손입니다. TCollectionItem.Create는 TCollection 타입의 파라미터 하나만을 가지므로, Add는 Add가 호출된 TCollection 인스턴 스에 파라미터를 전달합니다. 이것은 다음 코드에서 설명합니다.

Object_7_2.png

Self는 여러가지 이유로 유용합니다. 예를 들어, 클래스 타입에서 선언된 멤버 식별자는 클 래스 메소드 중 하나의 블럭에서 다시 선언될 수 있습니다. 이러한 경우, 원래의 멤버 식별자 를 Self.Identifier로 액세스할 수 있습니다.
클래스 메소드의 Self에 대한 내용은“클래스 메소드”를 참조하십시오.


메소드 바인딩

메소드는 정적(static), 가상(virtual) 또는 동적(dynamic)일 수 있습니다. 기본값은 static 입니다. 가상 메소드와 동적 메소드는 오버라이드될 수 있고 추상화(abstract)될 수 있습니 다. 이런 지정은 한 클래스 타입의 변수가 자손 클래스 타입의 값을 가지게 되면 역할을 하게 됩니다. 이들 지시어는 어떤 메소드가 호출되었을 때 어떤 구현이 선택될지를 결정합니다.

■ 정적 메소드

메소드는 기본적으로 정적입니다. 정적 메소드가 호출되면, 메소드가 호출된 클래스나 객체변수의 (컴파일 시점에서) 선언된 타입에 따라 선택될 구현이 결정됩니다. 다음 예제에서 Draw는 정적 메소드입니다.

Object_7_3.png

위와 같이 선언했다면, 다음 코드는 정적 메소드를 호출했을 때의 동작을 보여줍니다. Figure.Draw에 대한 두 번째 호출에서, Figure 변수는 TRectangle 클래스의 객체를 참조 하지만 Figure 변수의 선언된 타입이 TFigure이기 때문에 TFigure의 Draw의 구현이 호출 됩니다.

Object_7_4.png


참조링크
http://tech.devgear.co.kr/devgearbook
델파이 프로그래밍 언어 - 엠바카데로 저 | 박지훈 역 (2009년)

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15742
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 14154
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16707
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22269
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23588
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 19110
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39542
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174958
83 High-DPI를 적용한 윈도우 10으로 빠르게 마이그레이션 하기 관리자 2020.01.07 350
82 [엠바카데로 Feature Friday][개발팁] 윈도우 10에서 VCL로 높은 DPI 애플리케이션 개발하기 관리자 2019.06.28 349
81 [고객사례-유틸리티, C++빌더] Reg Organizer - 시스템 레지스트리 구성&최적화 유틸리티 관리자 2020.01.20 347
80 RAD Studio 10.3.3 안드로이드 앱에서 센서 컴포넌트 사용시 링크 오류 해결방법 김원경 2020.03.18 346
79 [발표자료] 20180621 부산 세미나-What's NEW!! RAD스튜디오: 최신 OS지원과 플랫폼 확장 방안 file 관리자 2018.06.25 346
78 [고객사례-유틸리티, 델파이] Navuu 관리자 2020.03.09 343
77 [델파이 안드로이드 64비트 오류 수정] TInAppPurchase 컴포넌트 수정 file 김원경 2020.03.18 341
76 개발. 공유. 영감. – 엠바카데로 총괄 매니저가 전하는 메세지 (2020.11) 관리자 2020.12.01 340
75 [DelphiFeeds.com 리뉴얼] 새롭게, 델파이 개발자들에게 매우 유용한 뉴스 피드를 모아서 제공합니다. 관리자 2020.11.19 340
74 [UX Summit 요약] 애플리케이션을 개발할 때 데스크톱부터 개발해야 하는 이유 (Why Desktop First to Develop an Application) 관리자 2020.11.17 340
73 AtoZed – IntraWeb 15 Personal 관리자 2020.09.01 338
72 [개발팁] 오래된 레거시 델파이, C++ 애플리케이션을 최신 스타일의 초고속 앱으로 마이그레이션하기 관리자 2020.10.15 337
71 RAD Studio IDE에 툴 추가하기 file 김원경 2020.03.17 337
70 [베를린] GetIt 속성값을 별도의 옵션창에서 관리할 수 있습니다. 관리자 2016.05.30 337
69 [10.4 시드니][업데이트 1] 새로운 IDE 기능들 관리자 2020.10.08 336
68 [다시보기] 전세계 개발자를 위한 컨퍼런스! CodeRage 2018 file 관리자 2018.11.29 336
67 이 달의 기술자료 - 2020년 11월 file 험프리 2020.10.27 334
66 [베를린] Eddystone 비콘을 사용할 수 있습니다. 관리자 2016.05.30 334
65 [발표자료] 현대화 vs. 소멸, 여러분의 프로젝트는 어디로 가고 있나요? 관리자 2017.08.17 333
64 [발표자료] 2015년 12월 C++ Skill Sprints 온라인 세미나 시리즈 관리자 2015.12.30 331