Philographer

상속, 오버라이딩

Inheritance

  • 한 클래스가 다른 클래스에서 정의된 프로퍼티나 메소드를 물려받아 사용하는 것
  • parent: 부모 클래스, 상위 클래스, 수퍼 클래스, 기본 클래스
  • child: 자식 클래스, 하위 클래스, 서브 클래스, 파생 클래스
  • : 키워드
  • class 클래스명 : 부모 클래스 {
      //추가로 구현하고자 하는 내용
    }
    
  • 스위프트에서는 단일상속만 지원
  • 첫 번째만 상속, 나머지는 구현(Implements)

Overriding(재정의, 덮어씀)

  • 부모클래스에서 물려받은 메소드나 프로퍼티를 덮어씀
  • 연산 프로퍼티 형태로 오버라이딩 해야함.
  • get, set 구문을 제공해야 한다.
  • 부모 클래스 접근을 위해 super 키워드 사용 가능

프로퍼티 오버라이딩 시 가능한 것

  1. 저장 프로퍼티를 get,set 구문이 모두 있는 연산 프로퍼티로 오버라이딩
  2. get, set 구문이 모두 제공되는 연산 프로퍼티를 get, set 구문이 모두 제공되는 연산 프로퍼티로 오버라이딩
  3. get 구문만 제공되는 연산 프로퍼티를 get, set 구문이 모두 제공되는 연산 프로퍼티로 오버라이딩
  4. get 구문만 제공되는 연산 프로퍼티를 get 구문만 제공되는 연산 프로퍼티로 오버라이딩

프로퍼티 오버라이딩 시 불가능 한 것

  1. 저장 프로퍼티저장 프로퍼티로 오버라이딩
  2. get, set 구문과 관계없이 연산 프로퍼티저장 프로퍼티로 오버라이딩
  3. 저장 프로퍼티를 get 구문만 제공되는 연산 프로퍼티(=읽기 전용)로 오버라이딩
  4. get, set 구문을 모두 제공하는 연산 프로퍼티를 get 구문만 제공되는 연산 프로퍼티로 오버라이딩

메소드 오버라이딩

  • 오버라이딩 대상이 되는 메소드의 매개변수 개수나 타입, 반환 타입은 변경 불가
  • 오버라이딩 가능한 것은 오로지 내부 구문

Overloading(적재)

  • 하나의 메소드 이름으로 여러 가지 메소드를 만들어 쌓는 것.
  • 메소드는 하나지만 매개변수가 다름

오버로딩을 막는 방법

  • 오버로딩은 보안성이 매우 떨어짐
  • final 키워드 사용

'IOS > Swift' 카테고리의 다른 글

Any, AnyObject  (0) 2016.05.28
타입 캐스팅  (0) 2016.05.28
메소드  (0) 2016.05.28
프로퍼티  (0) 2016.05.28
객체지향 프로그래밍, 구조체와 클래스 비교  (0) 2016.05.28
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다