목록지정생성자 (4)
大器晩成

클래스의 생성자 자동 상속 규칙 지정생성자 예외사항 (자동상속) → 저장속성의 기본값 설정새 저장 속성이 아예 없거나, 기본값이 설정되어 있다면 (실패 가능성 배제) -> 자동상속 하위 클래스가 지정된 초기화 구문을 정의하지 않았으면 자동으로 상위 클래스에 지정된 초기화 구문을 모두 상속합니다.-> 자동 상속편의생성자 예외 상황(자동상속) → 상위지정생성자 모두 상속(초기화 실패 가능성 배제시) 자동 상속(1) 지정 생성자 자동으로 상속하는 경우(2) 상위 지정생성자 모두 재정의 구현 (실패 가능성 배제)즉, 지정정생저를 모드 상속하는 경우, 모든 편의 생성자를 자동으로 상속합니다. 지정 생성자와 편의 생성자의 실제 사례 - 애플 공식 문서class Food { var name: String ..
생성자 상속 시 구현 규칙상위의 지정생성자(이름/파라미터)와 현재단계의 저장속성을 고려해서 구현합니다. [1단계 - 상위 생성자에 대한 고려]상위에 어떤 지정 생성자가 존재하는지?(상위) 지정 생성자1) 하위클래스에서 지정 생성자로 구현 (재정의)2) 하위클래스에서 편의 생성자로 구현 가능 (재정의)3) 구현 안 해도 됨(반드시 재정의하지 않아도 됨)(상위) 편의 생성자재정의를 하지 않아도 됨 (호출 불가가 원칙이기 때문에 재정의 제공 안 함)(만약에 동일한 이름을 구현했다면) 그냥 새로 정의한 것임 [2단계 - (현재단계의) 생성자 구현] 1) 지정 생성자 내에서1) 나의 모든 저장 속성을 초기화해야 함2) 슈퍼 클래스의 지정 생성자 호출2) 편의 생성자 내에서현재 클래스의 지정생성자 호출 해야 함 ..

생성자 위임 규칙(Initializer Delegation)스위프트의 상속관계에서는 지정생성자와 편의 생성자에 대한 3가지 규칙을 가지고 있습니다.서브클래스의 지정생성자는 상위클래스의 지정생성자를 호출해야 합니다.편의 생성자는 동일한 클래스의 다른 지정생성자를 호출해야 합니다.편의 생성자는 궁극적으로 지정 생성자를 호출해야 합니다.class Bird { var species: String var name: String init(species: String, name: String) { self.species = species self.name = name } convenience init() { self.init(species..
구조체와 클래스의 생성자 종류구조체클래스지정생성자, (자동 제공되는 멤버와이즈 생성자)실패가능생성자지정생성자 편의 생성자 (상속과 관련)필수 생성사 (상속과 관련)실패가능생성자 1. 지정생성자(Designated Initializer)기본생성자를 지정생성자라고 하며, 편의생성자와 구분하기 위해 지정생성자라는 용어를 사용합니다.지정생성자는 모든 속성을 초기화해야 합니다.struct color { var red: Double var gree: Double var blue: Double init(red: Double, gree: Double, blue: Double) { self.red = red self.gree = gree self.blu..