Objective-C 클래스 작성 및 상속


  1. 클래스 작성
    1. 목적 : SDK에서 제공되는 클래스들에서 원하는 기능이 없는 경우 특정 기능을 가진 클래스를 만들어서 사용하기 위해서 작성한다.
    2. 클래스 생성하는 방법
      1. Nativigator 에서 마우스 오른쪽버튼을 눌러서 New File 버튼을 누른다.
      2. 헤더 파일과 Objective-C 파일을 따로 만들어도 되나 Cocoa Class 를 선택하면 선언하는 헤더파일과 구현하는 구현파일인 Objective-C 파일이 생성된다.
      3. 선택하여 "Ractangle" 을 입력하면 아래와 같은 파일이 생성된다.
      4. 아래와 같이 헤더 파일에 변수나 메소드를 정의한다.
      5. 구현 파일에는 헤더 파일에서 정의한 메소드를 구현한다.
      6. 클래스에 정의 및 구현한 메소드들을 이용하여 사각형의 길이와 높이를 정의하고 그 길이를 구하는 함수를 구현하도록 한다.
      7. 헤더 파일(.h)은 클래스에서 사용하는 메소드를 선언하는 부분으로 외부에 공개가 되며, 구현 파일(.m)에서는 헤더 파일에서 선언한 메소드를 구현한다.
      8. 변수는 헤더파일, 구현파일 모두에서 선언이 가능하며, 헤더파일에서 선언하면 공개가 되고, 구현파일에서 선언하면 비공개가 된다.
  2. 클래스 상속
    1. 정의 : 부모 클래스와 자식 클래스를 생성하여 부모 클래스에 있는 변수 및 메소드를 자식 클래스에서도 사용할 수 있는 것을 의미한다.
    2. Object-C에서는 단일 상속만 지원한다. 즉 자식 클래스는 하나의 부모 클래스만을 가지고, 부모 클래스는 여러 자식 클래스를 가질 수 있다. 아래 그림은 뷰 클래스가 부모 클래스이고, 라벨, 이미지 뷰, 버튼은 자식 클래스이다.
    3. Is-a 관계 : 자식 클래스 객체는 부모 클래스로 객체로 취급한다.
      예시) View *view = [[Label alloc] init]; 형태로 정의
    4. 오버로딩(Overloading)과 오버라이딩(Overridiing)
      1. 오버로딩: 같은 이름의 메소드를 여러 개 가지면서 매개변수의 유형과 개수가 다름 
      2. 오버라이딩 : 상위 클래스가 가지고 있는 메소드를 하위 클래스가 재정의 해서 사용
      3. Object-C에서는 오버라이딩만 지원한다.
    5. Ractangle 클래스를 상속받는 Square라는 클래스를 생성한다.
    6. setWidth 함수를 재정의하여 사용한다.
    7. Square 클래스에서는 Ractangle 클래스에 있는 함수도 사용할 수 있다.