필수 생성자(Required)

쏘스야·2023년 4월 17일
0

ios 개발자의 첫걸음

목록 보기
59/61
/**
 필수 생성자
 */

class Dog {
    var name: String
    var weight: Double
    
    required init() {
        self.name = "강아지"
        self.weight = 10.0
    }
}

class Aclass {
    var x: Int
    required init(x: Int) {
        self.x = x
    }
}
// 하위 생성자는 반드시 해당 필수 생성자를 구현 해야함

class Bclass {
//    required init(x: Int) {
//        super.init(x: x)
//    }
}


/**
 필수생성자 자동 상속 조건 : 다른 지정 생성자 구현 안하면 -> 자동 상속
 */

class Cclass: Aclass {
    init() {
        super.init(x: 0)
    }
    required init(x: Int) {
        super.init(x: x)
    }
}


/**
 필수 생성자 사용 예시 (UIView)
 
 */

class AView: UIView {
//    required init?(coder: NSCoder) {
//        fatalError("init(coder:) has not been implemented")
//    }
//    init() {
//
//    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}


class BView: UIView {
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

/**
 - 클래스의 생성자 앞에 required(필수의) 키워드를 붙이면 하위클래스에서 반드시 해당 생성자를 구현해야함
 - 해당 생성자의 의미(파라미터 이름 및 타입이 동일한)
 
 - 하위클래스에서 필수 생성자 구현시, override(재정의) 키워드 없이 required(필수의) 키워드만 붙이면 됨
 
 - 필수생성자 자동상속 조건: 다른 지정 생성자를 구현 안하면, 자동으로 필수생성자 상속됨.
 
 */
profile
개발자

0개의 댓글