[Swift] 상속

선주·2022년 4월 1일
0

Swift

목록 보기
7/20

📌 상속

  • Swift의 상속은 클래스, 프로토콜 등에서 가능하다.
  • 열거형, 구조체는 상속이 불가능하다.
  • Swift는 다중상속을 지원하지 않는다.

클래스의 상속과 재정의

class 이름: 상속받을 부모클래스 이름 {
	/* 구현부 */
}
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 func classMethod() {
    	print("type method = class")
    }
    
    // 재정의 가능한 class 메소드라도 final 키워드를 사용하면 재정의 불가
    final class func finalClassMethod() {
    	print("type method - final class")
    }
}
class Student: Person {
    var major: String = ""
    
    override func selfIntroduce() {
        print("저는 \(name)이고, 전공은 \(major)입니다")
    }
    
    override class func classMethod() {
        print("overriden type method - class")
    }
    
    // static을 사용한 타입 메서드는 재정의 불가
	// override static func typeMethod() {    }
    
    // final 키워드를 사용한 메서드, 프로퍼티는 재정의 불가
	// override func sayHello() {    }
	// override class func finalClassMethod() {    }

}

let yagom: Person = Person()
let hana: Student = Student()

yagom.name = "yagom"
hana.name = "hana"
hana.major = "Swift"

yagom.selfIntroduce()
// 저는 yagom입니다

hana.selfIntroduce()
// 저는 hana이고, 전공은 Swift입니다

Person.classMethod()
// type method - class

Person.typeMethod()
// type method - static

Person.finalCalssMethod()
// type method - final class

Student.classMethod()
// overriden type method - class

Student.typeMethod()
// type method - static

Student.finalCalssMethod()
// type method - final class


야곰의 스위프트 기본 문법 강좌를 수강하며 작성한 내용입니다.

profile
기록하는 개발자 👀

0개의 댓글