본문 바로가기
Swift & iOS

[Swift & iOS] Overriding

by jkkooooooo 2021. 7. 20.
반응형

오버라이딩

 

서브클래스가 슈퍼클래스를 상속 받을 때 슈퍼클래스의 멤버들을 상속 받는다.

서브클래스는 상속 받은 멤버들을 그대로 사용할 수 있고 아니면 서브클래스 구현에 맞게  재정의를 할 수 있는데 이걸 오버라이딩 이라고 한다.

 

오버라이딩은 메소드, 프로퍼티, 서브스크립트, 생성자에 적용 가능하다

 

오버라이딩 구현

 

Student 클래스는 Person을 상속 받고 있으며  speak 메소드를 오버라이딩 하여 사용 하고 있다.

오버라이딩을 할 때는 override 키워드를 입력해야 한다.

class Person {
    var name: String = ""
    
    init(name: String){
        self.name = name
    }
    
    func speak() {
        print("Hello \(name)")
    }
}

class Student: Person{
    var grade: Int = 1
        
    override func speak() {
        print("Hi \(name)")
    }

}

let p = Person(name: "Person")
let s = Student(name: "Student")

p.speak()
s.speak()

 

두 클래스의 speak 메소드를 호출하면 오버라이딩한 메시지를 출력하는걸 볼 수 있다.

 

또한 오버라이딩 하였다고 해서 기존 멤버가 사라지는것은 아니며, super 를 통해 슈퍼클래스의 멤버를 호출 하는 것도 가능하다.

class Student: Person{
    var grade: Int = 1
        
    override func speak() {
        super.speak()
        print("Hi \(name)")
    }

}

 

 

 

 

반응형