/**
필수 생성자
*/
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(필수의) 키워드만 붙이면 됨
- 필수생성자 자동상속 조건: 다른 지정 생성자를 구현 안하면, 자동으로 필수생성자 상속됨.
*/