develop

final Keyword 본문

iOS

final Keyword

pikachu987 2021. 1. 17. 16:47
반응형

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