2012-08-16 3 views
0

ClassBClassA의 하위 클래스 인 경우 ClassB's ivars 중 하나가 ClassA의 인스턴스 인 경우 괜찮습니까? 죄송합니다, 이것이 바보 같은 질문이라면. 난 그냥 어떻게 ClassBClassA에서 상속을 혼동 찾을 수 있지만 그것의 인스턴스를 소유 수 있습니다.클래스의 ivar이 수퍼 클래스의 인스턴스가 될 수 있습니까?

+2

모든 객체가 수퍼 클래스로서 NSObject를 가지고 있다고 생각하십시오. –

답변

1

네, 좋습니다. 기본적으로 모든 종류의 ivars를 가질 수 있습니다.

+1

일부 언어에서는 A의 * 하위 클래스 *를 A. Objective-C에 대한 A. Dunno의 구성원으로 만들려고하면 약간의 어려움을 겪을 수 있습니다. –

+0

@HotLicks 예,하지만 우리는 Obj-C 만 다른 언어에 대해서는 말하지 않습니다. 완벽하게 유효해야하는'@class SomeSubclass'를 사용하여 서브 클래스를 forward-declare한다면 (여전히 좋은 습관은 아니다). –

+0

그래, 오리 유형이고 클래스 상속 맵을 유지하려고하지 않기 때문에 Obj-C에서 작동 할 것으로 기대합니다. 한번도 시도하지 않았습니다. (공식적으로 작동하지 않더라도 수퍼 클래스 포인터로 가짜로 만들 수 있습니다 - 이것은 거의 모든 언어에서 마찬가지입니다.) –

1

괜찮습니다. 클래스에는 자체 유형의 ivar도있을 수 있습니다.

당신이 클래스 왜건을 가지고 있고 기차를 모델링한다고 가정 해 봅시다. 너의 수레 종류에는 아마 수레 유형 2의 ivars가있을 것입니다. 하나는 기차의 다음 왜건을 가리키고 다른 하나는 이전 왜건을 가리 킵니다.

그런 다음 수레의 PassengerWagon 하위 클래스를 구현할 수 있으며 수퍼 클래스의 Wagon ivars를 상속받습니다. 명백한 점은 PassengerWagon 인스턴스의 이웃을 추적하려는 경우 수퍼 클래스가 아닌 PassengerWagon에서 ivars 만 정의 할 수 있지만 이웃은 Wagon 유형이 될 수 있습니다.

관련 문제