Kotlin Tutorial - Bài 3: Classes trong Kotlin: Mạnh hơn và tốn ít effort hơn

Class trong Kotlin được đơn giản nhất có thể để bạn có thể thể hiện được logic tối đa với số lượng code ít nhất. Tôi sẽ thể hiện cho bạn thấy làm sao có thể viết Class Kotlin nhanh nhất.

1. Khai báo Class

class Person

Rất dễ dàng khi sử dụng lớp từ dành riêng và tên của class. Bạn không cần phải xử dụng dấu ngoặc nếu như trong class không chứa đoạn code nào.

Bạn có nhìn thấy nó không được khai báo từ khóa phạm vi public. Đó là bởi vì mọi thứ đều mặc định là public trong Kotlin.

2. Thêm một vài Properties

Các trường không tồn tại trong Kotlin ( hoặc ít nhất bạn không cần phải khai báo chúng). Class đã bao gồm các thuộc tính đó. Để đơn giản, thuộc tính thay thế các ** field** + getter + setter trong Java. Bởi vậy, hãy khai báo một vài thuộc tính cho lớp

class Person {
    var name = "Name"
    var surname = "Surname"
}

Nếu bạn muốn tùy chỉnh setter thì bạn có thể khai báo nó:

var name = "Name"
    set(value){
        name = "Name: $value"
    }

Như bạn thấy, bạn có thể sử dụng biến trực tiếp trong String mà không cần phải sử dụng kiểu string.format Bạn có nhận ra được số lượng code bạn giảm thiểu được chứ? Tất cả các setter và getter đã biến mất.

3. Thêm Constructor

Mậc định thì bạn chỉ cần khởi tạo class, bạn có thể add thêm một vài constructor, bạn sẽ thấy nó được sử dụng trong các bài sau. Chỉ vì có một constructor, cách để viết nó có thể được đơn giản đi nhiều:

class Person(val name: String, val surname: String)

Chuyện gì đã xảy ra ở đây.

  1. Các properties đã biến mất, nhưng thực tế thì nó vẫn ở đó. Nhưng nếu các đối số của constructor được chú thích với val hoặc var thì các property đã được tạo ra bên trong đó
  2. Các constructor được viết ngay sau khi định nghĩa class, bạn không phải tạo thêm phương thức và gán giá trị cho thuộc tính.

4. Bạn có thể tạo function bên trong class

Và sử dụng thuộc tính bên trong function như bạn muốn:

class Person( val name: String, val surname: String ){
    fun getFullname() = "$name $surname"
}

Như ví dụ trên cho thấy, function có thể được viết theo cách gộp khi giá trị được gán trực tiếp. Nhưng nó vẫn tồn tại cách viết theo kiểu Java cũ:

 fun getFullname () : String{
     return "$name $surname"
 }

Trong trường hợp này thì bạn cần phải định nghĩa kiểu trả về.

5. Mọi thứ trong Kotlin đều được close theo default

Vì vậy mà nó không thể được extend, và các con ( trong trường hợp class có thể extend) không thể override các function của nó, trừ khi nó được khởi tạo với từ khóa open :

open class Person(val name: String, val surname: String)
class Cop(surname : String) : Person("Mr", surname)

Bạn có thể thấy constructor của class parren được gọi như thế nào. Rất đơn giản và trong sáng.

6. Kết luận

Trong bài này, bạn đã thấy được một vài điểm khác nhau giữa Java và Kotlin. Nếu bạn muốn biết nhiều hơn về chúng thì bạn có thể theo dõi trong các bài tiếp theo