Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Blog

Class trong Kotlin

Class trong Kotlin
Kiến thức hữu ích

Class trong Kotlin

Bài viết class trong Kotlin sẽ trình bày đến các bạn đọc phương pháp lập trình hướng đối tượng với Kotlin. Những nội dung được đề cập bao gồm class, đối tượng, hàm, hàm khởi tạo, thuộc tính, overriding function, static (Companion Object) và access modifier.

Nếu các bạn đã từng tìm kiếm và từng tìm hiểu về lập trình hướng đối tượng nói chung và lập trình hướng đối tượng với Java thì những nội dung mà chúng tôi vừa liệt kê thì không có gì mới lạ. Hôm nay, chúng tôi sẽ đề cập đến những nội dung này theo hướng tiếp cận với Kotlin.

Class trong Kotlin là gì?

Trong Kotlin, một class là một khối xây dựng cơ bản cho việc khai báo đối tượng và định nghĩa các thuộc tính và hành vi của đối tượng đó. Class là một mô hình hoặc mẫu để tạo ra các đối tượng cụ thể. 

Nó bao gồm các thành phần như các thuộc tính (properties) để đại diện cho trạng thái của đối tượng và các phương thức (methods) để mô tả hành vi của đối tượng.

Các đối tượng được tạo từ class gọi là instances (thể hiện) của class. Chúng ta có thể tạo nhiều instances từ một class và mỗi instance có thể có giá trị riêng cho các thuộc tính của nó.

Class của class trong Kotlin

Giống như Java, class trong Kotlin được khai báo với từ khóa class

class tên_class {

}

Ví dụ về khai báo lớp NhanVien

class NhanVien {

}

Lưu ý về cách đặt tên cho class sử dụng danh từ, viết hoa ở ký tự đầu mỗi từ và chúng ta cũng đã biết class được dùng để tạo ra đối tượng (thể hiện của lớp). Mỗi đối tượng được đề cập thường có những đặc điểm (thuộc tính) và những xử lý liên quan (hàm). Do đó, bên trong class sẽ có những thành viên này.

Hàm khởi tạo của class trong Kotlin

Như các bạn đã biết, hàm khởi tạo (constructor) dùng để khởi tạo ra giá trị cho các thuộc tính khi tạo ra một thể hiện của lớp. Và một lớp không nhất thiết phải cần có hàm khởi tạo.

Một class trong Kotlin có thể có một hàm khởi tạo chính (primary constructor), một hoặc là nhiều hàm khởi tạo thức cấp (secondary constructor)

1/ Cú pháp của khai báo hàm khởi tạo chính

class tên_class (danh_sách_tham_số){

}

Ví dụ khai báo hàm khởi tạo của class NhanVien với 2 tham số bao gồm là  ma và ten

class NhanVien(var ma: String, var ten: String){

}

Với khai báo như trên thì đồng nghĩa với việc class NhanVien có 2 nhóm  thuộc tính là ma và ten. Đối với Java thì sẽ được khai báo như sau

class NhanVien {
  String ma
  String ten

  public NhanVien(String ma, String ten) {
    this.ma = ma
    this.ten = ten
  }
}

Không khó để nhận ra rằng cùng một yêu cầu nhưng việc cài đặt bằng Kotlin sẽ gọn hơn so với Java

2/ Cú pháp của khai báo hàm khởi tạo thứ cấp

Để khai báo một hoặc nhiều hàm khởi tạo thứ cấp, chúng ta sẽ sử dụng từ khóa constructor

class NhanVien(var ma: String, var ten: String) {
    //Hàm khởi tạo thứ cấp không tham số
    constructor() : this("","")
}

Với cú pháp khai báo như trên, class NhanVien có 2 hàm khởi tạo. Một hàm khởi tạo có 2 tham số và một hàm khởi tạo còn lại thì không có tham số. Và đoạn mã code : this(“”,””) với mục đích gọi hàm khởi tạo chính. Đây là xử lý bắt buộc.

Thuộc tính của class trong Kotlin

Có 2 cách để bạn khai báo thuộc tính trong class với Kotlin. Một là khi khai báo sử dụng hàm khởi tạo chính như ở trên. Hai là khi khai báo theo cú pháp sau

class tên_Class {
    [lateinit] var tên_thuộc_tính: kiểu_dữ_liệu
}

Trong đó từ khóa lateinit dùng để xác định thuộc tính sẽ được khởi tạo giá trị ban đầu sau. Nếu không sử dụng từ khóa này thì thuộc tính phải được gán giá trị tại thời điểm khai báo.

Ví dụ về khai báo lớp KhachHang có 3 thuộc tính kiểu String

class KhachHang {
    lateinit var ma: String
    lateinit var ten: String
    lateinit var diachi: String
}

Tới đây thì các bạn cũng nên biết về access modifier cũng có thể hiểu là quyền truy cập. Access modifier được sử dụng để khai báo thuộc tính và khai báo phương thức. Nó cho chúng ta được biết những thuộc tính và phương thức nào được sử dụng ở lớp khác.

Trong Kotlin có 4 access modifier bao gồm là private, protected, internalpublic. Nếu lúc khai báo thuộc tính hay phương thức mà chúng ta không chỉ định 1 trong 4 access modifier trên thì mặc định sẽ là public.

Access modifierGiải thích
privateChỉ sử dụng ở lớp khai báo
protectedGiống như private ngoài ra còn được sử dụng ở lớp con
internalGiống như protected ngoài ra còn được sử dụng ở các lớp cùng module
publicKhông giới hạn truy cập

Hàm của class trong Kotlin

Hàm trong Kotlin được khai báo bằng cách sử dụng từ khóa fun. Cũng như các ngôn ngữ lập trình khác, hàm trong Kotlin có thể có tham số và có thể trả về giá trị.

Ví dụ 1: khai báo hàm dùng để hiển thị chuỗi từ “Xin chào mọi người!”. Hàm này không có tham số và không trả về giá trị nơi gọi hàm

fun hienThi() {
  println("Xin chào mọi người!")
}

Sử dụng hàm

hienThi()

Ví dụ 2: về khai báo hàm tính tổng của 2 số nguyên. Hai số nguyên  sẽ được truyền vào hàm khi hàm được gọi. Hàm nhận vào 2 số nguyên

fun tinhTong(n: Int, m: Int) {
  var tong = n + m
  println("Tổng hai số là $tong")
}

Sử dụng hàm

tinhTong(100, 200)

Ví dụ 3: khai báo hàm tính lũy thừa 2 của số nguyên x. Hàm trả về giá trị sau khi tính toán tại nơi đã gọi hàm.

fun tinhLuyThua(x: Int): Int {
  return x * 2
}

Sử dụng hàm tinhLuyThua

val kq = tinhLuyThua(100)

Ví dụ của class trong Kotlin

1/ Tạo một class tên Student bao gồm 3 thuộc tính và 2 hàm

Class trong Kotlin

2/ Tạo ra một file Kotlin tên System có một hàm Main

Class trong Kotlin

3/ Kết quả khi chạy chương trình

Class trong Kotlin

Kết luận của class trong Kotlin

Như vậy, qua bài viết về class trong Kotlin trên đây, R2S chúng tôi đã giúp bạn hiểu được về class trong kotlin, class, hàm khởi tạo, thuộc tính, hàm, Ví dụ của class trong Kotlin

Đừng quên bỏ lỡ bất cứ bài viết nào của chúng tôi để có thể học thêm nhiều kiến thức hữu ích về lập trình kotlin nhé.

Hãy đến với website của R2S để có thể tìm hiểu sâu hơn vào lập trình và công nghệ thông tin để có thêm nhiều kiến thức về nó hơn nhé. 

Bài viết gốc được đăng tải tại giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!