상속 및 유효 범위(scope)


클래스를 선언할 때 그 클래스의 직접 조상(ancestor)을 지정할 수 있습니다. 예를 들면, 

Object_2_1.png

위 문법은 TControl의 자손으로 TSomeControl이라는 클래스를 선언합니다. 클래스 타입 은 해당 직접 조상으로부터 자동으로 모든 멤버를 상속받습니다. 각 클래스는 새 멤버를 선 언하거나 상속된 멤버를 재정의할 수 있지만, 조상에서 정의된 멤버를 제거할 수는 없습니 다. 따라서 TSomeControl에는 TControl과 TControl의 각 조상들에서 정의된 멤버가 모두 포함되어 있습니다.

멤버의 식별자 유효 범위(scope)는 멤버가 선언된 위치에서 시작하여 클래스 선언 끝까지 계속되며 클래스의 모든 자손과 클래스 및 클래스 자손에서 정의된 모든 메소드 블럭까지 확 장됩니다. 


■ TObject 및 TClass

System 유닛에서 선언된 TObject 클래스는 다른 모든 클래스의 최고 조상입니다. TObject 는 기본 생성자 및 소멸자를 비롯한 최소한의 메소드만을 정의합니다. TObject와 함께, System 유닛에는 클래스 참조 타입인 TClass도 선언되어 있습니다.

 Object_2_2.png

TObject에 대한 자세한 내용은 온라인 헬프를 참조하십시오. 클래스 참조 타입에 대한 자세 한 내용은“클래스 참조”절을 참조하십시오.

클래스 타입 선언에서 조상을 지정하지 않으면 클래스는 TObject를 직접 상속받습니다. 따라서,

Object_2_3.png

위 선언은 아래의 선언과 같습니다.

Object_2_4.png

가독성을 위해 후자 형태를 사용하는 것이 좋습니다.


■ 클래스 타입의 호환성

클래스 타입은 자신의 조상 클래스 타입과 대입 호환 가능합니다. 따라서 클래스 타입의 변 수는 모든 자손 타입의 인스턴스를 참조할 수 있습니다. 예를 들어, 다음과 같이 선언했다면,

Object_2_5.png

Fig 변수에는 TFigure, TRectangle, TSquare 타입의 값을 대입할 수 있습니다.


■ object 타입

델파이 컴파일러는 클래스 타입을 대신할 수 있는 object 타입을 사용할 수 있습니다. 문법은 아래와 같습니다.

Object_2_5.png

여기서 objectTypeName은 유효한 식별자이고, (ancestorObjectType)은 옵션이며, memberList는 필드, 메소드, 속성들을 선언합니다. (ancestorObjectType)을 생략하면 새 타입은 조상이 없게 됩니다. object타입은 published 멤버를 가질 수 없습니다.


object 타입은 TObject의 자손이 아니므로, 기본으로 제공되는 생성자, 소멸자, 기타 메소드가 없습니다. New 프로시저를 사용하여 object 타입의 인스턴스를 만들 수 있고 만든 인스턴스를 Dispose 프로시저로 소멸시키거나, 레코드에서처럼 object 타입 변수를 레코드처럼 선언할 수 있습니다. object 타입은 하위 호환성을 위해서만 지원되므로 사용하지 않는 것이 좋습니다.


참조링크

http://tech.devgear.co.kr/devgearbook

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

번호 제목 글쓴이 날짜 조회 수
공지 [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
663 [REST-무료제공툴] REST 디버거 - REST 서비스를 언제든 신속하게 분석할 수 있습니다. file 험프리 2020.06.15 1024
662 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 22. 날짜와 시간 관리자 2019.03.29 1023
661 [마이그레이션][FireDAC] MapRules를 적용해 데이터타입 매핑하기 file 험프리 2017.02.07 1018
660 [시애틀] 작업 중 비정상 종료 시 저장하지 않은 작업을 복구할 수 있습니다. file Humphery 2015.10.05 1016
659 [10.3 리오] C++17 지원으로 Clang 컴파일러가 더욱 강화되었습니다. file 관리자 2018.11.16 1016
658 [무료 온라인 세미나] Delphi Week 2015 file 관리자 2015.02.07 1014
657 [10.3 리오][업데이트 3] RAD서버 도커(Docker) 배포 기능을 활용하세요. file 관리자 2019.11.22 1010
656 [업데이트][XE8] RAD Studio XE8 업데이트1 [1] file Humphery 2015.06.23 1003
655 [도서/PDF/소스코드] 델파이 Begin...End - 11장. DLL 작성과 호출 관리자 2019.08.19 1002
654 [팁] VLC 플레이어(ActiveX Import 해) 사용하기 file 험프리 2020.09.22 1001
653 파스칼(PASCAL) 언어 50년과 델파이(DELPHI) 관리자 2021.03.31 995
652 데브기어 컴포넌트 컨버터 원리와 구조 설명 험프리 2019.10.11 984
651 수원과학대 학생이 델파이로 개발한 '축구 리그 앱' 관리자 2017.11.24 982
650 [10.4 시드니][업데이트 1] What's NEW! 신기능 자세히 보기 [2] 관리자 2020.09.03 981
649 [베를린] 윈도우10에서 블루투스LE와 비콘을 활용할 수 있습니다. 관리자 2016.05.30 981
648 iOS SDK 추가 화면에서 SDK 목록이 표시되지 않을 경우 해결방안 file 험프리 2019.01.16 978
647 엠바카데로가 제안하는 가장 효율적인 비용으로 최신식 앱 개발 방법 관리자 2018.12.11 978
646 [도서/PDF/소스코드] 시작하는 사람들을 위한 델파이 프로그래밍-모듈 20. StringGrid 실습 관리자 2019.03.29 974
645 [시애틀] FireDAC NoSQL 드라이버로 몽고DB를 완벽 지원합니다. Humphery 2015.09.04 972
644 [팁] 온라인 바이러스 진단 서비스 - 구글 Virus Total file 험프리 2016.01.06 970