<< 오브젝티브 C : 상속, NSObject, 프로토콜, id형 >>

1. 상속

   - 상속을 이용하여 다른 클래스로부터 변수나 메서드를 이어받을 수 있습니다.

   사용예)

   @interface Animal:NSObject

   - Animal 클래스는 NSObject 클래스를 상속하고 있습니다.

   - 자바와 마찬가지로 상속원 클래스는 하나이다. (다중 상속 안됨)

   - 부모클래스에서 변수는 @public, @private, @protected 로 지정할 수 있다.

   사용예) @public int a;


2. NSObject

   - 루트클래스

   - 주요 메서드

     1) (id)alloc : 인스턴스를 생성합니다. (클래스 메서드)

     2) -(id)init : 생성한 인스턴스를 초기화 합니다.

     3) -(id)self : 자기 자신의 인스턴스를 반환합니다.

     4) -(id)copy : 인스턴스의 복사를 반환합니다.

     5) (BOOL)isEqual(id)object : 오브젝트를 비교합니다.


3) 프로토콜

   - 자바에서 인터페이스와 동일

   - 클래스에서 메서드나 프로퍼티의 처리를 강제하는 장치

   - 사용예)

   @protocal FruitsInfo

   @require

      -(void)showBrand;

   @optional

      -(void)showCalorie;

   @end

   - @require는 반드시 처리 필요, @optional은 선택사항


   -사용예2) FruitsInfo 프로토콜을 채택

   @interface Orange: NSObject <FruitsInfo>

   {

:

   }

   -(void)showCalorie;

   @end


   - 사용예3) 형식 프로토콜에 준거한다. showBrand 메서드를 구현.

   @implementation Orange

    -(void) showBrand

    {

       : 

     }

    -(void)showCalorie

    {

       : 

     }


   - 델리게이트 :다른 오브젝트에게 처리를 맡기는것, 프로토콜은 다른 오브젝트에서의 호출에 따라 자신이 만든 메서드에서 독자적인 처리를 수행하는 경우에 사용

      예를 들어 "키가 눌려졌다", "마우스가 클릭 되었다" 같은 독자적인 처리를 수행하기 위해 사용

   - 프로토콜은 상속할 수 있고, 다중 상속을 지원한다.

      사용예) 상속

      @protocal A

          :

      @end

      @protocal B <A>

          :

      @end

      프로토콜 B는 프로토콜 A를 상속한다.


      사용예) 다중상속, 프로토콜 D는 프로토콜 A,B,C를 채택합니다.

      @protocal D <A, B, C>

          :

      @end


   -프로토콜의 메서드가 인스턴스에서 모두 처리되었는지 확인하려면 conformsToProtocal: 메서드 사용

     사용예) object : 검사할 오브젝트 변수, Protocol1 : 검사할 프로토콜

     if( object conformsToProtocal:@protocal(Protocol1))

     {

:

     }

     올바르게 준거가 일어난경우(프로토콜의 메서드가 인스턴스에서 모두 처리된 경우)는 YES를 반환


4) id형     


+ Recent posts