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) - 동일한 형식에 있는 다른 생성자를 호출할때 사용
Author And Source
이 문제에 관하여(self & super), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kiwoo93/self-super-ixh6aom7저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)