develop
final Keyword 본문
반응형
class final
final 키워드가 있는 class는 다른 class에서 상속받지 못한다.
final class Animal {
var name = ""
}
class Dog: Animal {
}
Inheritance from a final class 'Animal' 이렇게 컴파일 에러가 난다.
클래스를 다른 클래스에 상속 받으면 안되는 경우에 사용할 수 있다.
method final
final 키워드가 있는 method는 class에서 상속받을떄 해당 method를 override하지 못한다.
class Animal {
final func bite() {
}
}
class Dog: Animal {
override func bite() {
print("개가 뭅니다.")
}
}
메서드에 final을 붙이고 override를 하면 Instance method overrides a 'final' instance method라는 컴파일 에러가 난다.
final class func과 class func과 static
class Animal {
static func bite() {
}
}
class Dog: Animal {
override static func bite() {
print("개가 뭅니다.")
}
}
Animal.bite()
Dog.bite()
Cannot override static method 라는 static 메서드는 오버라이드 할수 없다 컴파일 에러가 나온다.
class Animal {
class func bite() {
}
}
class Dog: Animal {
override class func bite() {
print("개가 뭅니다.")
}
}
Animal.bite()
Dog.bite()
이렇게 class로 바꿔주면 override가 가능하다.
class Animal {
final class func bite() {
}
}
class Dog: Animal {
override final class func bite() {
print("개가 뭅니다.")
}
}
Animal.bite()
Dog.bite()
여기에 final을 붙이게 되면 override를 할수 없어진다.
static과 final class는 같은 기능을 할수있다.
반응형
'iOS' 카테고리의 다른 글
Declaration Attributes (0) | 2021.01.19 |
---|---|
DispatchGroup (0) | 2021.01.18 |
Standard Library Protocol (0) | 2021.01.16 |
OptionSet (0) | 2021.01.15 |
AccessControl 접근 한정자 (0) | 2021.01.14 |
Comments