μμ
μμμ κ°λ κ³Ό ν€μλ
- Swiftμμ μμ(Inheritance)μ ν΄λμ€(Class) κ°μ μ½λ λ° μμ±μ 곡μ νλ λ©μ»€λμ¦μ μ 곡νλ€.
- μμμ κΈ°μ‘΄ ν΄λμ€μμ μλ‘μ΄ ν΄λμ€λ₯Ό λ§λ€κ³ , κΈ°μ‘΄ ν΄λμ€μ νΉμ±(μμ±κ³Ό λ©μλ)μ μ¬μ¬μ©νλ©΄μ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μ μλλ‘ ν΄μ€λ€(μλΈ ν΄λμ±).
- μ₯μ
- μ½λ μ¬μ¬μ©μ±: κΈ°μ‘΄ ν΄λμ€μ νΉμ±μ μ¬μ¬μ©νμ¬ μ€λ³΅μ νΌνκ³ μ μ§λ³΄μμ±μ λμΌ μ μλ€.
- κ³μΈ΅ ꡬ쑰: λΆλͺ¨ ν΄λμ€μ μ΄λ₯Ό μμλ°λ μμ ν΄λμ€ κ°μ κ³μΈ΅ ꡬ쑰λ₯Ό νμ±νμ¬ λ€μν μμ€μ μΆμνμ λΆλ₯λ₯Ό κ°λ₯νκ² νλ€.
- ν€μλ
- override
- λΆλͺ¨ ν΄λμ€μμ μμλ°μ λ©μλ, μμ± λλ μλΈμ€ν¬λ¦½νΈλ₯Ό μμ ν΄λμ€μμ λ€μ μ μν λ μ¬μ©λλ€.
- μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μ¬μ μνμ¬ μλ‘μ΄ κ΅¬νμ μ 곡ν μ μλ€.
- λ©μλ, μμ±, μλΈμ€ν¬λ¦½νΈλ₯Ό μ¬μ μνκΈ° μν΄μλ override ν€μλλ₯Ό μ¬μ©ν΄μΌ νλ€.
- super
- μμ ν΄λμ€μμ λΆλͺ¨ ν΄λμ€μ λ©μλ, μμ± λλ μ΄κΈ°ν λ©μλλ₯Ό νΈμΆν λ μ¬μ©λλ€.
- λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό νΈμΆνκ±°λ λΆλͺ¨ ν΄λμ€μ μ΄κΈ°ν λ©μλλ₯Ό νΈμΆνλ λ° μ¬μ©λλ€.
- super.method() λλ **super.property**μ κ°μ΄ μ¬μ©νμ¬ λΆλͺ¨ ν΄λμ€μ κΈ°λ₯μ νΈμΆν μ μλ€.
- final
- ν΄λμ€, λ©μλ, μμ± λλ μλΈμ€ν¬λ¦½νΈλ₯Ό νμνμ¬ μμμ΄ λΆκ°λ₯νλλ‘ λ§λ λ€.
- final ν€μλκ° ν΄λμ€μ μ¬μ©λλ©΄ ν΄λΉ ν΄λμ€λ μμλ μ μλ€.
- λ©μλ, μμ±, μλΈμ€ν¬λ¦½νΈμ μ¬μ©λ κ²½μ°, ν΄λΉ λ©€λ²λ€μ μ¬μ μ(Override)ν μ μλ€.
- override
// λΆλͺ¨ ν΄λμ€(Person) μ μΈ
class Person {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func greet() {
print("Hello, my name is \(name).")
}
}
// Person ν΄λμ€λ₯Ό μμλ°λ μμ ν΄λμ€(Student) μ μΈ
class Student: Person {
var studentID: Int
init(name: String, age: Int, studentID: Int) {
self.studentID = studentID
super.init(name: name, age: age)
}
func study() {
print("\(name) is studying.")
}
}
// Student ν΄λμ€ μΈμ€ν΄μ€ μμ± λ° μ¬μ©
let john = Student(name: "John", age: 20, studentID: 123)
john.greet() // μΆλ ₯: Hello, my name is John.
john.study() // μΆλ ₯: John is studying.
// override, super ν€μλ μμ
class Animal {
func makeSound() {
print("Some generic sound")
}
}
class Dog: Animal {
override func makeSound() {
super.makeSound() // λΆλͺ¨ ν΄λμ€μ λ©μλ νΈμΆ
print("Bark!")
}
}
let dog = Dog()
dog.makeSound()
// final ν€μλ μμ
final class Vehicle {
final var wheels: Int = 0
final func makeSound() {
print("Some generic sound")
}
}
// Error: 'SubVehicle' cannot inherit from final class 'Vehicle' (classμ finalμ λΆμ΄λ©΄ μλλ€.)
class SubVehicle: Vehicle {
// Error: 'wheels' cannot override 'final' var from superclass
// override var wheels: Int = 4
// Error: 'makeSound()' cannot override a final method
// override func makeSound() {
// print("Custom sound")
// }
}
'π Today I Learned > Swift λ¬Έλ²' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Swift] νλ‘νΌν° μ΅μ λ² (0) | 2023.12.08 |
---|---|
[Swift] μ΄κΈ°ν (0) | 2023.12.07 |
[Swift] ν΄λμ€, ꡬ쑰체, μ΄κ±°ν (0) | 2023.12.07 |
[Swift] κ°μ²΄ μ§ν₯ (0) | 2023.12.07 |
[Swift] λ°°μ΄, μΈνΈ, λμ λ리 (0) | 2023.12.07 |