iOS/Swift

[Swift] 클래스의 상속

유훈 | Yuhun 2022. 1. 24. 00:20
반응형

class의 사용에서 상속은 중요한 개념입니다.

// 클래스의 상속

// 상속
//class childClass: parentClass {
//
//}

class Person {
    var name: String = ""
    
    func selfIntroduce() {
        print("저는 \(name) 입니다")
    }
     
    // final을 이용하면 오버라이딩 할 수 없다.
    final func sayHello(){
        print("hello")
    }
    
    // 타입 메서드 - 인스턴스를 만들지 않아도 사용이 가능하다.
    // static을 이용하면 재정의 할 수 없다.
    static func typeMethod() {
        print("type method - static")
    }
    
    // class를 이용하면 재정의가 가능하다.
    // class는 (static의 역할 + static의 기능이 있지만 재정의 가능)
    class func classMethod() {
        print("type method - class")
    }
    
    
}

// 상속하기
class Student: Person {
    var major: String = ""
    
    // 오버라이딩은 override 키워드를 이용한다
    // 헷갈리지 않게 해주어 편리한듯 하다.
    override func selfIntroduce() {
        print("오버라이드 한 자기소개")
        // 부모클래스의 selfIntroduce 부르기
        super.selfIntroduce()
    }
    
    // class method는 재정의 할 수 있다.
    override class func classMethod() {
        print("override type method - class")
    }
    
    // final과  static 타입 메서드는 재정의 불가
}

// 사용 예시
let A: Person = Person()
let B: Student = Student()

A.name = "nameA"
B.name = "nameB"
B.major = "majorB"

A.selfIntroduce()
B.selfIntroduce()

Person.typeMethod()
Person.classMethod()
Student.typeMethod()
Student.classMethod()

출처 : 야곰 스위프트 기본 문법 강좌

반응형

'iOS > Swift' 카테고리의 다른 글

[Swfit] 옵셔널 체이닝  (0) 2022.01.24
[Swift] 클래스의 생성자와 소멸자  (0) 2022.01.24
[Swift] 클로저  (0) 2022.01.23
[Swift] 열거형  (0) 2022.01.23
[Swift] 구조체, 클래스, 프로퍼티, 프로퍼티 감시자  (0) 2022.01.22