1. 상속
- 스위프트의 상속 : 클래스 / 프로토콜
- 구조체 / 열거형은 상속이 불가
- 다중 상속을 지원하지 않음
class ClassName: ParentClassName {
}
2. 정의
- final: 이 키워드를 사용하여 재정의 방지 가능 / 주 목적은 override 방지
- static: 재정의 불가 타입 메서드 / 타입메서드와 타입프로퍼티이고 추가적으로 재정의 방지기능이 있는 차이
- class: 재정의 가능 타입 메서드
- final class: 재정의 가능한 class 메서드라도 final 키워드를 사용하면 재정의 불가 (final class === static)
class Person {
var name: String = ""
func selfIntro () {
print("i am \(name)")
}
final func sayHello() {
print("hello")
}
static func typeMethod() {
print("type method - static")
}
class func classMethod() {
print("type method - class")
}
final class func finalClassMethod() {
print("type method - final class")
}
}
class Student: Person {
var major: String = ""
overrind func selfIntro() {
print("i am \(name), major is \(major)")
}
override class func classMethod() {
print("overriden type method - class")
}
}
let per: Person = Person()
let stu: Student = Student()
per.name = "per"
stu.name = "stu"
stu.major = "mech"
per.selfIntro()
stu.selfIntro()
Person.classMetho()
Person.typeMethod()
Person.finalClassMethod()
Student.classMethod()
Student.typeMethod()
Student.finalClassMethod()