self & super

self

  • 현재 인스턴스에 접근하기 위한 특별한 속성이다.
  • 사용자가 직접 정의하지 않아도 컴파일러가 자동으로 추가해준다.
  • 인스턴스 내부에서 접근하면 해당 인스턴스에 접근한다
  • 타입멤버 내부에서 접근하면 형식 자체에 접근한다.

self.propertyName - 인스턴스 속성에 접근할때 사용
self.method() - 인스턴스 메소드를 호출할때 사용
self[index] - 서브스크립트 호출할때 사용
self.init(parameters) - 동일한 형식에 있는 다른 생성자를 호출할때 사용


위 코드에서처럼 메소드 내부에서 속성이름과 파라미터 이름이 같을경우 모두 파라미터로 인식한다.
이때 self 키워드를 사용해서 속성과 파라미터를 구분해준다.


위 코드에서처럼 클로저에서 인스턴스 멤버(저장 프로퍼티에) 접근하려면 first와 second를 캡쳐해야한다. 이때 self를 사용해야 인스턴스 속성에 접근할 수 있다.

static let typeTest = "" // 저장 타입 프로퍼티

static func selfTypeTest() { // 타입 메소드
   self.width // width의 타입 속성은 존재하지 않는다.
   self.typeTest // 타입 프로퍼티이므로 접근 가능

위 코드에서처럼 static키워드를 사용한 타입 프로퍼티, 메소드 즉 타입멤버 내부에서 self로 접근하면 형식 자체에서 접근한다.


super

  • 상속과 연관이 있기 때문에 클래스에서만 사용 가능하다.
  • 슈퍼클래스에 있는 멤버에 접근할 때 사용한다.

super.propertyName - 인스턴스 속성에 접근할때 사용
super.method() - 인스턴스 메소드를 호출할때 사용
super[index] - 서브스크립트 호출할때 사용
super.init(parameters) - 동일한 형식에 있는 다른 생성자를 호출할때 사용

좋은 웹페이지 즐겨찾기