중첩된 타입

클래스 선언 안에서 타입 선언을 중첩하여 선언할 수 있습니다. 중첩된 타입(nested type)은 일반적으로 객체 지향 프로그래밍에서 전반적으로 사용됩니다. 중첩된 타입은 개념적으로 연 관된 타입들을 함께 유지할 수 있는 방법을 제공하며, 이름 충돌을 피하기 위해서도 좋습니다.


중첩된 타입의 선언

중첩된 타입의 선언은 4장의“타입 선언”절에서 정의된 타입 선언 문법을 따릅니다. 

Object_15_1.png


중첩된 타입의 선언의 끝은 식별자가 아닌 토큰(procedure, class, type, 모든 가시성 유효 범위 지정자)이 처음 나타나는 곳입니다.
중첩된 타입과 그 포함된 타입에 대해서도 일반적인 접근성 규칙이 적용됩니다. 중첩된 타입 은 자신을 포함하는 클래스(containing class)의 인스턴스 변수(필드, 속성, 메소드)를 액세 스할 수 있지만, 그러기 위해서는 객체 참조를 가지고 있어야 합니다. 중첩된 타입은 클래스 필드, 클래스 속성, 클래스 정적 메소드를 객체 참조 없이 액세스할 수 있지만, 일반적인 델 파이 가시성 규칙이 적용됩니다.

중첩된 타입은 자신을 포함하는 클래스의 크기를 증가시키지 않습니다. 포함하는 클래스의 인스턴스를 생성하더라도 중첩된 타입의 인스턴스도 함께 생성되는 것은 아닙니다. 중첩된 타입은 자신의 선언 문맥에 의해서만 자신을 포함하는 클래스와 연관됩니다.


중첩된 클래스의 선언과 액세스

다음의 예는 중첩 클래스의 필드와 메소드를 선언하고 액세스하는 방법을 보여줍니다. 

Object_15_2.png


안쪽 클래스의 innerProc 메소드를 구현하려면, 메소드 이름을 바깥 클래스의 이름으로 한 정해야 합니다. 예를 들면 다음과 같습니다.

Object_15_3.png


중첩된 타입의 멤버를 액세스하려면 일반적인 클래스 멤버를 액세스할 때처럼 마침표(.) 표 기를 사용합니다. 예를 들면 다음과 같습니다.

Object_15_4.png 

 

중첩된 상수

중첩된 타입 섹션과 같은 방식으로 상수도 클래스 타입 안에 선언할 수 있습니다. 상수 영역 의 끝은 중첩된 타입 영역과 같은 토큰(예약어나 가시성 지정자)이 처음 나타나는 곳입니다. 타입 지정 상수는 지원되지 않으므로, Currency나 TDateTime 같은 값 타입의 중첩 상수를 선언할 수 없습니다.


중첩 상수는 모든 단순 타입이 될 수 있습니다. 서수, 서수 부분범위(subrange), 열거형, 문 자열, 실수 타입이 가능합니다.

다음의 코드는 중첩 상수의 선언을 보여줍니다. 


Object_15_5.png

Object_15_6.png


번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15442
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13962
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39257
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174713
1203 [델파이 문법] 프로시저와 함수 #4 file 관리자 2012.08.02 6108
1202 [델파이 문법] 클래스와 객체 #14 file 관리자 2012.06.19 6096
1201 BLOB 컬럼에 (이미지 등의)데이터 읽고 쓰기 험프리 2016.08.01 6093
1200 델파이에서 사용하는 각 Stream(스트림) 정리 김원경 2017.01.04 6089
1199 [C++빌더 XE3 비디오 31] 기존 C++ VCL과 파이어몽키 앱에서 메트로폴리스 UI 사용하기 관리자 2013.01.08 6088
1198 Instagram Filter 효과와 같은 앱 소스(소스 포함) [2] Humphery 2014.04.09 6068
1197 XE5 안드로이드 SMS 전송 방법 [2] c2design 2013.09.23 6062
1196 InterBase ToGo 에디션 퀵사용자 가이드(한글) file 문효섭 2014.01.03 6050
» [델파이 문법] 클래스와 객체 #15 file 관리자 2012.06.20 6027
1194 FireMonkey Quick Start Guide now available on our DocWiki 관리자 2012.04.02 6016
1193 인터베이스(InterBase) 2020 버전을 사용해야 하는 5 가지 이유 file 김원경 2020.04.09 6015
1192 [C++빌더 XE3 비디오 31] Anchors 프로퍼티와 Layout 컴포넌트(TScaledLayout, TFlowLayout, TGridLayout) 활용 관리자 2013.01.03 5994
1191 David I의 31일 동영상(한글자막) - 픽셀 쉐이더 이미지 효과를 사용하는 앱(윈도우&맥)(델파이 동일 적용 가능) 관리자 2013.04.22 5989
1190 [웹세미나 비디오] Delphi XE3와 HTML5 Builder의 새로워진 기능 관리자 2012.10.09 5980
1189 David I의 31 XE3 퀵 비디오 - FM2 미디어 플레이어 컴포넌트 활용하기 관리자 2012.10.08 5948
1188 델파이 튜토리얼 워크샵 발표자료_3D 프로그래밍과 라이브바인딩 file 관리자 2012.07.05 5940
1187 [델파이 문법] 문법 요소 #9 file 관리자 2012.11.05 5933
1186 David I의 31 XE3 퀵 비디오 - HTML5 빌더로 클라이언트 모바일 앱 개발하기 관리자 2012.10.15 5901
1185 InterBase XE3 데이터시트 file 문효섭 2014.01.04 5882
1184 [C++빌더 XE3 비디오 31] 인터베이스 Express로 나만의 SQL 데이터베이스 C++ 파이어몽키 앱 만들기 관리자 2013.01.09 5865