클래스 메소드

작성일

클래스 메소드

class MyClass {
    // 클래스 메소드는 인스턴스를 생성하지 않고 메소드 호출이 가능한데
    // final class 메소드랑 static class 메소드도 동일하다.
    class func sayHi() -> String {
        return "안녕?!"
    }
    static func sayHello() -> String {
        return "안녕하세요?!"
    }
    final class func sayHelloFinal() -> String {
        return "호호 안녕하세요?!"
    }
}

print(MyClass.sayHi()) //안녕?!
print(MyClass.sayHello()) //안녕하세요?!
print(MyClass.sayHelloFinal()) //호호 안녕하세요?!

// 클래스 메소드는 오버라이딩 가능하지만
class HahaClass : MyClass {
    override class func sayHi() -> String {
        return "sayHi() HahaClass 에서"
    }
    // 스태틱과 파이널 메소드들은 부모 클래스 메소드를 오버라이딩 할 수 없다
}

print(HahaClass.sayHi()) //sayHi() HahaClass 에서

출력

안녕?!
안녕하세요?!
호호 안녕하세요?!
sayHi() HahaClass 에서