타입 메서드

쏘스야·2023년 4월 13일
0

ios 개발자의 첫걸음

목록 보기
50/61
class Dog {
    static var species = "Dog"
    
    var name: String
    var weight: Double
    
    init(name: String, weight: Double) {
        self.name = name
        self.weight = weight
    }
    
    func sit() {
        print("\(name)가 앉았습니다.")
    }
   
    func trainning() {
        print("월월 저는 \(Dog.species)입니다.")
        sit()
        sit()
        self.sit()  // self 키워드는 명확하게 지칭하는 역할일 뿐
    }
    
    func changeName(newName name: String) {
        self.name = name
    }
    
    static func letmeKnow() {       // 타입 메서드에서, 타입속성에 접근시에는 타입으로 접근하지 않아도 됨.
        print("좋은 항상 \(Dog.species) 입니다.") // species 으로 생략 가능
    }
    
}

let bori = Dog(name: "보리", weight: 20.0)
bori.sit()
Dog.letmeKnow()


/**
 타입 메서드 사용 예시
 */

Int.random(in: 1...3)
Double.random(in: 1.2...4.5)


/**
 클래스 - 타입 메서드 상속
 - 상속부분을 공부하고 다시 살펴볼 예정
 - 타입 메서드를 상속 시 재정의가능 하도록 하려면 ===> static 키워드를 상속가능한 class 키워드로 바꿔야함.
 */

// 상위 클래스
class SomeClass {
    class func someTypeMethod() {       // 타입 메서드
        print("타입과 관련된 공통된 기능의 구현")
    }
}

SomeClass.someTypeMethod()

// 상속한 서브 클래스
class SomeThingClass: SomeClass {
    override class func someTypeMethod() {
        print("타입과 관련된 공통된 기능의 구현(업그레이드)")
    }
}

SomeThingClass.someTypeMethod()



profile
개발자

0개의 댓글