Q

instance 메서드 vs class 메서드

Lyla. 2023. 5. 5. 17:12

Instance Method

: Class, Stuct, Enum 형태의 인스턴스에 속한 메소드

클래스를 통해 호출할 수 없고, 클래스의 인스턴스를 만들어 실체화 하여 생성된 인스턴스를 통해서 호출할 수 있는 메소드

 

Class Method

: 인스턴스를 만들어 실체화 하지 않아도 클래스를 통해 직접적으로 호출 가능하다. 

 

Class Method는 왜 사용하는가?

: static 메서드는 상속이 불가능하다. 그런데 이를 상속해서 사용하기 위해 class Method를 사용, overriding이 가능해진다.

 

 static 메서드: 상속해서 사용은 가능, 오버라이딩 해서 사용할 수 있도록 만든 것이 class 메서드이다. 

 

 

 

[예제 코드]

import UIKit

class Person {
    class func sing(){
        print("노래하다")
    }
    static func lying(){
        print("휴식중...")
    }
}

class Idol:Person{
    
    override class func sing(){
        print("idol⭐️")
        print("노래하다")
    }
    //!오류 발생: Cannot override static method.
//    override static func lying(){
//        
//    }
    //인스턴스 메서드
    func play(){
        print("오늘은 게임해요")
    }
}

Person.sing()
Idol.sing()
Idol.lying()

//클래스의 인스턴스를 만들어 실체화
var mina : Idol = Idol()

//실체화 하여 실행
mina.play()