open class Animal
class Zebra: Animal()
fun main() {
var animal = Zebra()
animal = Animal() // 컴파일 오류: Type mismatch
}
fun main() {
var animal: Animal = Zebra()
animal = Animal() // 할당 가능
}
CarFactory
인터페이스를 살펴보자.interface CarFactory {
fun produce(): Car
}
val DEFAULT_CAR: Car = Fiat126P()
val DEFAULT_CAR = Fiat126P()
interface CarFactory {
fun produce() = DEFAULT_CAR
}
CarFactory
에선 Fiat126P
이외의 자동차를 생성하지 못하게 되었다.