재정의란?
클래스의 상속에서 상위클래스의 속성/메서드의 기능을 변형하여 사용하는것
메서드의 재정의
자유롭게 재정의 가능
class Person {
var id = 0
var name = "Jimin" // 저장속성은 기본적으로 읽기, 쓰기 지원
var phoneNumber = "010xxxxxxxx"
func doSomething() {
print("doSomething")
}
}
class Student: Person {
var studentId = 0
override func doSomething() { // 재정의
print("doAnotherSomething")
}
}
var person1 = Person() // Person 인스턴스
var student1 = Student() // Student 인스턴스
person1.doSomething() // 콘솔: doSomething
student1.doSomething() // 콘솔: doAnotherSomething
상위클래스의 메서드는 그대로 실행하고 추가기능만 넣고싶은데 어찌해야함?
- super.상위클래스메서드()
- super이란 상위클래스를 의미한다 (self는 자기 자신의 클래스를 의미)
class Person {
var id = 0
var name = "Jimin" // 저장속성은 기본적으로 읽기, 쓰기 지원
var phoneNumber = "010xxxxxxxx"
func doSomething() {
print("doSomething")
}
}
class Student: Person {
var studentId = 0
override func doSomething() {
super.doSomething()
print("doAnotherSomething")
// super.doSomething() (밑에넣으면 당연히 추가한 기능 먼저 실행하고 상위메서드 실행)
}
}
var student1 = Student() // Student 인스턴스
student1.doSomething() // 콘솔: doSomething
// doAnotherSomething
서브스크립트도 재정의가 가능하다
'Swift > 문법' 카테고리의 다른 글
[Swift] 초기화(Initialization)와 생성자(Initializer) (2/5) 지정생성자와 편의생성자 (0) | 2022.04.09 |
---|---|
[Swift] 초기화(Initialization)와 생성자(Initializer) (1/5) (0) | 2022.04.03 |
[Swift] 상속 및 재정의(2/3) 프로퍼티의 재정의 (0) | 2022.04.03 |
[Swift] 상속 및 재정의(1/3) 상속의 기본 개념 (0) | 2022.04.03 |
[Swift] 메서드(Methods)의 종류 (0) | 2022.04.02 |