Bài 20: Inheritance trong swift - Lập trình Swift cơ bản

Đăng bởi: Admin | Lượt xem: 2804 | Chuyên mục: Swift


Khái niệm

Một class được gọi là class con khi kế thừa mọi phương thức, thuộc tính, đặc điểm của một class khác ( hay có thể gọi là class cha).
Trong ngôn ngữ lập trình Swift, class con có thể truy xuất và gọi những đặc điểm, thuộc tính và subscript thuộc về class cha cũng như cung cấp các phương thức để hoàn thiện và thay đổi hành vi của chúng.

Định nghĩa class cơ sở (Base class)

Class cơ sở hay Base class là những class không kế thừa bất kỳ phương thức, đặc điểm hay thuộc tính của những class khác.
Bạn có thể xem thêm ví dụ dưới đây để hiểu thêm nhé: 
class Vehicle {

   var currentSpeed = 0.0

   var description: String {

      return "traveling at \(currentSpeed) miles per hour"

   }

   func makeNoise() {

     // do nothing - an arbitrary vehicle doesn't necessarily make a noise

  }

}
Bạn có thể tạo một thể hiện của class Vehicle như sau:
  1. let someVehicle = Vehicle()

Class con (Subclass)

Class con sẽ kế thừa những đặc tính của class cha và cũng có thể định nghĩa thêm những đặc tính của riêng mình.
Bạn có thể xem thêm ví dụ dưới đây để hiểu thêm nhé: 
class Bicycle: Vehicle {
     var hasBasket = false
}

Khai báo một thể hiện:

let bicycle = Bicycle().bicycle.hasBasket = true

Ghi đè (Overriding)

Để ghi đè phương thức lên class cha thì bạn cần thêm tiền tố override đứng trước func trong phương thức bạn muốn override.
let train = Train()
train.makeNoise()
// Prints "Choo Choo"Truy xuất đặc điểm, thuộc tính, phương thức và subscript của class cha.
   Khi bạn thực hiện việc ghi đè một thuộc tính, phương thức hoặc subscript cho một class con.
  • Để truy xuất những thuộc tính của class cha bạn sử dụng từ khóa super:
super.someProperty
super.someMethod()
super[someIndex]

//Ghi đè một phương thức: Một instance method hoặc type method đều có thể ghi đè để
  cung cấp hay thay thế bên trong class con của bạn.
Ví dụ bên dưới định nghĩa một class con của Vehicle gọi là Train:
class Train: Vehicle {
    override func makeNoise() {
        print("Choo Choo")
    }
}
Nếu bạn tạo một thể hiện của Train và gọi phương thức makeNoise bạn có thể thấy phương thức được gọi ở class con là:
let train = Train()
train.makeNoise()
// Prints "Choo Choo"

Ghi đè một thuộc tính

Để thiết lập và truy xuất giá trị của thuộc tính, lập trình viên có thể ghi đè một thuộc tính và cung cấp các phương thức setter và getter

Ngăn chặn việc ghi đè

Để ngăn chặn việc ghi đè thuộc tính, phương thức và subscript từ một class khác lập trình viên chỉ cần thêm tiền tố final đằng trước thuộc tính, phương thức và subscript.
Khi đó, bất kỳ một nỗ lực để ghi đè thuộc tính, phương thức và subscript từ class con sẽ phát sinh error.
Bạn có thể đánh dấu toàn bộ một class là không được phép kế thừa thì bạn có thể sử dụng từ khóa final lúc định nghĩa class đó.
Bài tiếp theo: Initialization trong swift >>
vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!