Day 10 - 2023.01.14
class 이름: 상속받을 클래스 이름 {
// 구현 코드
}
// 클래스 Person
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 키워드를 사용하면 재정의 불가
// 메서드 앞의 `static`과 `final class`는 똑같은 역활을 한다.
final calss func finalClassMethod() {
print("type method - final class")
}
}
// Person을 상속받는 Student
calss Student: Person {
var major: String = ""
override func selfIntroduce() {
print("저는 \(name)이고, 전공은 \(major)입니다.")
}
override calss func classMethod() {
print("override type method - class")
}
// static을 사용한 타입 메서드 재정의 불가
override static func typeMethod() { }
// final 키워드를 사용한 메서드, 프로퍼티는 재정의 불가
override func sayHello() { }
override class func finalClassMethod() { }
let jaomg: Person = Person()
let yagom: Student = Student()
jamong.name = "jamong"
yagom.name = "yagom"
yagom.major = "Swift"
jamong.selfIntroudce() // 출력 : 저는 jamong입니다.
yagom.selfIntroudce() // 출력 : 저는 yagom이고, 전공은 Swift입니다.
Person.classMethod() // 출력 : type method - class
Person.typeMethod() // 출력 : type method = static
Person.finalClassMethod() // 출력 : type method - final class
Student.classMethod() // 출력 : override type method - class
Student.typeMethod() // 출력 : type method - static
Student.finalClassMethod() // 출력 : type method - final class