클래스 메소드



대부분의 메소드는 인스턴스 메소드라고 불리는데, 각각의 객체 인스턴스에 대해 동작하기 때 문입니다. 클래스 메소드는 객체 대신 클래스에 대해 동작하는 메소드입니다(생성자 제외). 클래스 메소드에는 일반적인 클래스 메소드와 클래스 정적 메소드의 두 종류가 있습니다. 


■ 일반적인 클래스 메소드


클래스 메소드의 정의는 예약어 class로 시작되어야 합니다. 아래 예를 보십시오.

Object_9_1.png 


클래스 메소드의 정의적 선언도 역시 class로 시작해야 합니다. 아래 예를 봅시다.

Object_9_2.png 


클래스 메소드의 정의적 선언에서, 식별자 Self는 메소드가 호출된 클래스를 의미합니다(자 신이 정의된 클래스의 자손일 수도 있습니다). 클래스 C에서 메소드가 호출되면, Self는 C클래스 타입입니다. 따라서 Self를 이용하여 인스턴스 필드, 인스턴스 속성, 일반적인 (객체) 메소드를 액세스할 수가 없습니다. 하지만 생성자나 다른 클래스 메소드, 혹은 클래스 속성 이나 클래스 필드를 호출하기 위해 Self를 사용할 수는 있습니다.


클래스 메소드는 클래스 참조나 객체 레퍼런스를 통해 호출할 수 있습니다. 객체 레퍼런스를 통해 호출했을 때는, 객체의 클래스는 Self의 값이 됩니다. 


■ 클래스 정적 메소드


일반적인 클래스 메소드처럼, 클래스 정적 메소드(class static method)는 객체 레퍼런스 없 이 액세스 가능합니다. 일반적인 클래스 메소드와 다른 점은, 클래스 정적 메소드는 Self 파라 미터가 아예 존재하지 않는다는 것입니다. 인스턴스 멤버를 액세스할 수 없다는 점도 동일합 니다. (역시 클래스 필드, 클래스 속성, 클래스 메소드를 액세스할 수 있습니다) 일반 클래스 메소드와 다른 또 한가지는, 클래스 정적 메소드는 가상 메소드로 선언될 수 없다는 것입니다. 메소드를 클래스 정적 메소드로 만들려면 선언의 뒤에 static이라는 예약어를 추가하면 됩니 다. 아래의 예를 봅시다. 


Object_9_3.png

일반 클래스 메소드처럼, 클래스 정적 메소드를 호출하려면 객체 참조 없이 클래스 타입을 통해서 호출하면 됩니다. 아래의 예를 참고하십시오.


Object_9_4.png 



참조링크

델파이 프로그래밍 언어 - 엠바카데로 저 | 박지훈 역 (2009년) 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15417
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13960
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16496
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22048
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23267
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18921
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39245
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174696
603 [베를린] 설치 작업이 개선되어 원하는 기능만 신속히 설치, 변경할 수 있습니다. file 험프리 2016.04.21 466
602 [베를린] 폴 디자이너를 분리해 여러 폼화면을 동시에 보고 편집할 수 있습니다. [1] file 험프리 2016.04.21 1283
601 [안드로이드/iOS] 이미 배포(Deployment)된 파일 업데이트 하기 험프리 2016.03.31 1537
600 이 달의 기술자료 - 2016년 04월 file 험프리 2016.03.28 503
599 TCategoryButtons 동적 생성하고, TButtonItem 클릭 이벤트 연결하기 file 험프리 2016.03.23 1362
598 SVN 서버 설치하기 - Visual SVN 이용 험프리 2016.02.29 3347
597 RAD Studio IDE에서 SVN 사용하기 + TortoiseSVN 사용하기 험프리 2016.02.29 1115
596 이 달의 기술자료 - 2016년 03월 [1] file 험프리 2016.02.25 778
595 애플 WWDR 인증서 만료로 iOS 개발자 인증서 이슈 해결 방안 험프리 2016.02.17 1256
594 OutputDebugString 함수로 디버그로그를 출력할 수 있습니다. file 험프리 2016.02.16 4256
593 이 달의 기술자료 - 2016년 2월 file 험프리 2016.01.26 549
592 IDE의 -r 커맨드라인 스위치로 IDE 시작 오류를 해결할 수 있습니다. file 험프리 2016.01.08 592
591 RAD Studio 빌드번호 확인하는 방법법 [1] file 험프리 2016.01.08 9488
590 인터베이스 데이터베이스와 테이블 생성하기 [3] file 험프리 2016.01.07 2498
589 [팁] 온라인 바이러스 진단 서비스 - 구글 Virus Total file 험프리 2016.01.06 970
588 [업데이트][핫픽스][10 시애틀] 모던테마(ModernTheme) 핫픽스 - 10 시애틀 업데이트 1 대상 험프리 2016.01.06 755
587 [발표자료] 2015년 12월 C++ Skill Sprints 온라인 세미나 시리즈 관리자 2015.12.30 330
586 이 달의 기술자료 - 2016년 01월 file 험프리 2015.12.28 515
585 [업데이트][핫픽스][10 시애틀] 10 시애틀 iOS 9.2 C++ 핫픽스 험프리 2015.12.28 467
584 Skill Sprint: C++과 안드로이드 인텐트(Intent)를 이용해 앱간 통신하기 험프리 2015.12.11 1205