슈퍼 클래스 - 해당되는 글 1건
크리에이티브 커먼즈 라이선스
Creative Commons License
(루트 클래스를 새로 만들 때를 제외하면) 새 클래스를 정의 할때, 이 클래스는 어떤 프로퍼티를 상속받는다. 예를 들어, 부모의 인스턴스 변수와 메서드는 모두 암묵적으로 새 클래스 정의에 들어간다. 다시 말해서 서브클래스는 마치 자신이 이 메서드와 인스턴스 변수들을 정의한 것처럼 이것들에 직접 접근할 수 있다.

@interface ClassA: NSObject
@end

@interface ClassB: ClassA
@end

ClassB가 NSObject가 아닌 ClassA의 서브 클래스임을 나타낸다. 따라서 ClassA의 부모 클래스(혹은 수퍼 클래스)는 NSObject지만, ClassB의 부모는 ClassA다.

NSObject  ->  ClassA  ->  ClassB

루트 클래스는 수퍼 클래스가 없고, 계층도에서 맨 아래에 있는 ClassB는 서브 클래스가 없다. 따라서 ClassA는 NSObject의 서브 클래스이고, ClassB는 ClassA와 NSObject의 서브 클래스다(정확히 말하면 NSObject의 서브-서브 클래스 혹은 손자 클래스다) 또한 NSObject는 ClassB의 수퍼클래스인 ClassA의 수퍼 클래스다. 계층도를 따라 올라가면 NSObject는 ClassB의 수퍼 클래스이기도 한 것이다.

@알맞은 메서드 찾기
객체에 메시지를 보낼 때, 어떻게 올바른 메서드를 선택하고 객체에 적용하게 되는지 궁금할 것이다. 사실 그 규칙은 매우 간단하다. 먼저 객체가 속한 클래스를 보고 그 클래스에 메시지와 이름이 동일한 메서드가 명시적으로 정의되어 있는지 확인한다. 만일 정의되어 있다면, 그 메서드가 사용된다. 메서드가 정의되지 않았다면, 부모 클래스를 확인한다. 부모 클래스에서 메서드가 정의되어 있다면 그 메서드가 사용된다. 그렇지 않다면 그 위 부모 클래스에서 찾는 식으로 계속 검색해 나간다. 
저작자 표시
신고

'Study > Objective-C' 카테고리의 다른 글

[Objective C: 동적바인딩과 id형]  (0) 2010.07.17
[Objective C: @class 지시어]  (0) 2010.07.16
[Objective C: 상속]  (0) 2010.07.16
[Objective C: self 키워드]  (0) 2010.07.16
[Objective C: static 키워드]  (0) 2010.07.16
[Objective C: 자동 생성 접근자 메서드]  (0) 2010.07.16
Trackback 0 | Comment 0

강군v's Blog is powered by Daum & tistory

 

티스토리 툴바