🧬 Kế thừa (Inheritance)
🎯 Mục tiêu: Hiểu kế thừa trong Kotlin với
open,override, và abstract classes.
💡 Khái niệm
Phần tiêu đề “💡 Khái niệm”Mặc định class trong Kotlin là final (không thể kế thừa). Dùng open để cho phép.
open class Animal(val name: String) { open fun makeSound() { println("Some sound") }}
class Dog(name: String) : Animal(name) { override fun makeSound() { println("Woof!") }}📝 Cú pháp
Phần tiêu đề “📝 Cú pháp”open class Parent { open val property = "parent" open fun method() { println("Parent method") }}
class Child : Parent() { override val property = "child" override fun method() { println("Child method") }}Gọi superclass
Phần tiêu đề “Gọi superclass”class Child : Parent() { override fun method() { super.method() // Gọi Parent.method() println("Child addition") }}🔧 Abstract Class
Phần tiêu đề “🔧 Abstract Class”abstract class Shape { abstract val area: Double abstract fun draw()
// Non-abstract method fun printArea() { println("Area: $area") }}
class Circle(val radius: Double) : Shape() { override val area: Double get() = Math.PI * radius * radius
override fun draw() { println("Drawing circle with radius $radius") }}🎯 Constructor và Inheritance
Phần tiêu đề “🎯 Constructor và Inheritance”open class Parent(val name: String) { init { println("Parent init: $name") }}
class Child(name: String, val age: Int) : Parent(name) { init { println("Child init: $name, $age") }}
// Output when creating Child("Alice", 25):// Parent init: Alice// Child init: Alice, 25⚠️ Lưu ý
Phần tiêu đề “⚠️ Lưu ý”✅ Checklist
Phần tiêu đề “✅ Checklist”- Dùng
openđể cho phép kế thừa - Dùng
overrideđể ghi đè - Hiểu abstract class vs open class
- Gọi
superkhi cần
Tiếp theo: Interface