class Figure {
var name: String
required init(name: String) {
self.name = name
}
func draw() {
print("draw \(name)")
}
}
class Rectangle: Figure {
// 모든 속성이 기본값을 가지고 있고 init을 직접 구현하지 않았기 때문에 super class의 init을 상속받음
// 여기서 name 파라미터를 받는 init을 직접 구현하도록 강제하고 싶다면? -> required init
var width = 0.0
var height = 0.0
// super class의 init을 상속받지 않기 위해 init 직접구현
init() {
width = 0.0
height = 0.0
super.init(name: "Unknown")
}
// subclass에서 required 를 구현할때는 override 키워드를 붙이지 않고, super class와 동일한 형태로 작성해야함
required init(name: String) {
width = 0.0
height = 0.0
super.init(name: name)
}
}