Tính thừa kế trong Kotlin (Bài 7)
Tính thừa kế trong Kotlin cũng tương tự như tính thừa kế trong lập trình Java, lập trình C#. Tính thừa kế là một trong những đặc điểm của lập trình hướng đối tượng. Việc này giúp tiết kiệm thời gian viết xử lý của lập trình viên rất nhiều trong việc phát triển ứng dụng. Chúng ta bắt đầu tìm hiểu tính thừa kế trong Kotlin với tình huống sau.
Hãy hình dung rằng chúng ta cần xây dựng một ứng dụng quản lý kinh doanh của một công ty. Những đối tượng cần quản lý bao gồm nhân viên, khách hàng. Mỗi nhân viên gồm những thông tin về họ tên, giới tính, số điện thoại và bằng cấp. Đối với khách hàng ứng dụng cần quản lý họ tên, giới tính, số điện thoại và điểm tích lũy khi họ mua hàng.
Bạn đã thấy điều gì ở tình huống trên chưa? Hãy lưu ý thông tin cần quản lý của nhân viên và khách hàng cơ bản giống nhau chỉ khác nhau ở một điểm là bằng cấp đối với nhân viên và điểm tích lũy đối với khách hàng.
Chúng ta sẽ giải quyết yêu cầu trên như thế nào? Câu trả lời ngay bên dưới
Tính thừa kế trong Kotlin – Cú pháp
1/ Đối với lớp cơ sở (lớp cha): Chúng ta đặt open trước từ khóa class
open class tên_lớp_cha {
}
2/ Đối với lớp được thừa kế (lớp con): Chúng ta đặt dấu hai chấm sau tên lớp
class tên_lớp_con : tên_lớp_cha {
}
3/ Ví dụ khai báo lớp cha là Person, lớp con là Employee
Khai báo lớp Person có một hàm khởi tạo nhận 2 tham số là mã và tên
open class Person (var id: String, var name: String){
}
Khai báo lớp Employee thừa kế lớp Person, lớp Employee có một hàm khởi tạo có 3 tham số là mã, tên và bằng cấp. Khi lớp con thừa kế lớp cha có hàm khởi tạo thì lớp con bắt buộc phải có phương thức khởi tạo với số lượng tham số tương tự như lớp cha.
class Employee(id: String,name: String, qualification: String) : Person(id,name) { }
Tính thừa kế trong Kotlin – Override trong Kotlin
Như chúng ta đã biết, override được đề cập ở lớp con với mục đích từ chối kế thừa của lớp cha. Hay nói cách khác, lớp con khai báo và thay đổi xử lý của những phương thức ở lớp cha.
1/ Tại lớp cha: Đối với những phương thức cho phép lớp con override, lập trình viên phải chỉ định từ khóa open
open fun tên_hàm() {
xử lý của hàm
}
2/ Tại lớp con: Đối với những phương thức thực hiện override, lập trình viên phải chịnh định từ khóa override
override fun tên_hàm() {
xử lý của hàm
}
Lưu ý tên hàm khai báo ở lớp con phải giống như ở lớp cha
3/ Ví dụ về override trong Kotlin
Tại lớp cha
open class Person (var id: String, var name: String){
open fun input() {
print("Hãy nhập mã: ")
id = readLine()!!
print("Hãy nhập tên: ")
name = readLine()!!
}
}
Tại lớp con
class Employee(id: String,name: String, var qualification: String)
: Person(id,name) {
// Phương thức thực hiện override
override fun input() {
// Gọi phương thức của lớp cha
super.input()
print("Hãy nhập bằng cấp: ")
qualification = readLine()!!
}
}
Tính thừa kế trong Kotlin – Ví dụ mẫu
1/ Mở IntlliJ IDE và tạo một project
2/ Tạo một Kotlin class, đặt tên Person và cài đặt code như hình
3/ Tạo một Kotlin class, đặt tên Employee và cài đặt code như hình
4/ Tạo một Kotlin class, đặt tên Program và cài đặt code như hình