2012-04-26 3 views
3

목적 -c의 상속과 카테고리의 차이점은 무엇입니까상속과 카테고리의 차이점은 무엇입니까

둘 다 서브 클래스에 사용됩니다! 그래서 그들 사이의 차이점은 무엇입니까

+0

[적어도 몇 가지] (http://stackoverflow.com/search?q=%5Bobjc%5D+inheritance+category) 기존 질문 : http://stackoverflow.com/questions/522341/difference- object-c-inheritance-and-objectives-c의 카테고리, http://stackoverflow.com/questions/9343670/what-is-the-actual-use-of-categories-instead-of-inheritance 및 문서 이것은 당신에게 대답 할 것입니다. –

답변

4

카테고리는 새로운 클래스를 전혀 생성하지 않고 클래스에 추가 기능을 추가합니다. 단지 확장 할 뿐이지 만 다형성이 묵시적이거나 그와 같은 것은 아닙니다.

상속은 다른 인스턴스 변수를 추가하고 다형성에 따라 상위 클래스에서 동작을 무시할 수있는 새로운 클래스를 생성합니다.

+1

또한 클래스에 인스턴스 변수를 추가 할 수없는 반면 하위 클래스에서는 추가 할 수 있습니다. – jmstone617

8

카테고리는 기본 클래스에 기능을 추가하는 좋은 방법이지만 Flash와 같은 다른 객체 지향 기술에서 온 나 같은 사람들은이 점이 상속 체인과 어떻게 관련되어 있는지 이해하기가 다소 어려울 것입니다. 똑같은 질문이 내 마음에 떠올랐다. 주제에 대한 빠른 연구를했다.

마지막으로 Category는 카테고리 자체가 말하는 것과 동일한 일을합니다. 기본 클래스에 기능을 추가합니다. 이것을 기억한다면 전혀 혼란이 없을 것입니다.

글쎄, 이해할 수 있도록 예를 들자. 클래스 A가 있고 클래스 B가 클래스 A의 서브 클래스라고 가정합니다. 응용 프로그램에서 클래스 B는 많은 장소에서 사용됩니다. 이제 클래스 A에 몇 가지 기능을 추가해야 할 필요가 있으므로 새 카테고리는 "A + newRole"로 작성됩니다. 이 카테고리가 작성되면 새로운 기능이 기본 클래스 및이 경우 클래스 A에 추가됩니다. 즉 클래스 B와 같은 클래스 A의 하위 클래스 인 모든 클래스가 자동으로 기능을 가져옵니다. 멋지다. 곧바로 하위 클래스에서 범주에 추가 된 새 메서드를 호출 할 수 있습니다. 여기서 필요한 것은 범주 파일을 적절한 위치로 가져 오는 것입니다.

+1

좋은 설명 @Mayank – iSwaroop

+0

좋습니다. 서브 클래 싱 및 카테고리는 어떻습니까? –

관련 문제