Trong bài viết này, bạn sẽ tìm hiểu về cả 4 công cụ sửa đổi khả năng hiển thị trong Kotlin và cách chúng hoạt động trong các tình huống khác nhau.
Công cụ sửa đổi khả năng hiển thị là các từ khóa thiết lập khả năng hiển thị (khả năng truy cập) của các lớp, đối tượng, giao diện, hàm tạo, chức năng, thuộc tính và bộ thiết lập của chúng. (Bạn không thể đặt công cụ sửa đổi mức độ hiển thị của getters vì chúng luôn có cùng mức độ hiển thị như của thuộc tính.)
Trong Kotlin Lớp và Đối tượng bài viết, bạn đã học về bổ tầm nhìn public
và private
ngắn gọn. Bạn sẽ tìm hiểu thêm về hai công cụ sửa đổi khả năng hiển thị protected
và internal
(cũng như public
và private
) một cách chi tiết.
Bộ điều chỉnh khả năng hiển thị bên trong gói
Một gói tổ chức một tập hợp các chức năng, thuộc tính và lớp, đối tượng và giao diện có liên quan. Đề xuất đọc: Gói Kotlin
bổ nghĩa | Sự miêu tả |
---|---|
công cộng | tuyên bố hiển thị ở mọi nơi |
riêng tư | hiển thị bên trong tệp chứa khai báo |
nội bộ | hiển thị bên trong cùng một mô-đun (một tập hợp các tệp Kotlin được biên dịch cùng nhau) |
được bảo vệ | không có sẵn cho các gói (được sử dụng cho các lớp con) |
Lưu ý: Nếu công cụ sửa đổi khả năng hiển thị không được chỉ định, thì nó sẽ là public
mặc định.
Hãy lấy một ví dụ:
// tên tệp: hello.kt package test fun function1 () () // công khai theo mặc định và hiển thị ở mọi nơi private fun function2 () () // hiển thị bên trong hello.kt internal fun function3 () () // hiển thị bên trong cùng mô-đun var name = "Foo" // hiển thị ở mọi nơi get () = field // hiển thị bên trong hello.kt (giống như thuộc tính của nó) private set (value) (// hiển thị bên trong hello.kt field = value) private class class1 () // hiển thị bên trong hello.kt
Công cụ sửa đổi khả năng hiển thị bên trong các lớp và giao diện
Đây là cách các công cụ sửa đổi khả năng hiển thị hoạt động cho các thành viên (hàm, thuộc tính) được khai báo bên trong một lớp:
bổ nghĩa | Sự miêu tả |
---|---|
công cộng | hiển thị cho bất kỳ khách hàng nào có thể thấy lớp khai báo |
riêng tư | chỉ hiển thị bên trong lớp học |
được bảo vệ | hiển thị bên trong lớp và các lớp con của nó |
nội bộ | hiển thị cho bất kỳ máy khách nào bên trong mô-đun có thể thấy lớp khai báo |
Lưu ý: Nếu bạn ghi đè một protected
thành viên trong lớp dẫn xuất mà không chỉ định khả năng hiển thị của nó, thì khả năng hiển thị của nó cũng sẽ như vậy protected
.
Hãy lấy một ví dụ:
open class Base () (var a = 1 // public theo mặc định private var b = 2 // private cho Base class protected mở val c = 3 // hiển thị với Base và class Derived internal val d = 4 // hiển thị bên trong cùng một mô-đun được bảo vệ vui vẻ e () () // hiển thị cho lớp Cơ sở và lớp Bắt nguồn) Bắt nguồn: Base () (// a, c, d và e () của lớp Cơ sở hiển thị // b không hiển thị ghi đè val c = 9 // c được bảo vệ) fun main (args: Array) (val base = Base () // base.a và base.d hiển thị // base.b, base.c và base .e () không nhìn thấy được. val. = Derived () // có nguồn gốc.c không hiển thị)
Thay đổi khả năng hiển thị của một hàm tạo
Theo mặc định, khả năng hiển thị của một hàm tạo là public
. Tuy nhiên, bạn có thể thay đổi nó. Đối với điều đó, bạn cần phải thêm constructor
từ khóa một cách rõ ràng .
Hàm tạo là public
mặc định trong ví dụ dưới đây:
Class Test (val a: Int) (// code)
Đây là cách bạn có thể thay đổi khả năng hiển thị của nó.
class Test private constructor (val a: Int) (// code)
Hàm tạo đây private
.
Lưu ý: Trong Kotlin, các hàm, biến và lớp cục bộ không thể có các công cụ sửa đổi khả năng hiển thị.