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()