I, Mở đầu
- Trong Kotlin, class, object class, interface, constructor, function, property và custom setter của property đều có
visibility modifier
(custom getter luôn có visiblity modifier giống với property). - Kotlin cung cấp 4 visibility modifier:
private
,protected
,internal
vàpublic
(mặc định). - Chúng sẽ được áp dụng vào các scope khác nhau trong project.
II, Package
- Function, property, class, object class, interface đều có thể là
top-level member
. - Ví dụ 1:
1 | // file name: example.kt |
- Trong 1 package, các visibility modifier có nhiệm vụ:
- private: các member chỉ visible ở trong file khai báo chúng.
- protected: không được sử dụng cho việc khai báo top-level member.
- internal: các member chỉ visible trong với các member khác trong cùng module.
- public: các member sẽ visible ở tất cả mọi nơi.
II, Class và interface
- Đối với các visibility modifỉer member được khai báo trong 1 class:
- private: các member chỉ visible ở trong class và các member khác (có thể là function, inner class).
- protected: private + visible trong subclass của nó.
- internal: các member chỉ visible trong với các member khác trong cùng module.
- public: các member sẽ visible ở tất cả mọi nơi.
- Nếu bạn override
protected member
ở subclass và không xác định visibility modifier, member bị override sẽ có visibility modifier là protected (không phải là public). - Ví dụ 2:
1 | open class Outer { |
III, Constructor
- Kotlin không cho phép constructor sử dụng protect.
- Để xác định visiblity modifier cho constructor, chúng ta thêm nó vào trước
constructor
keyword. - Ví dụ 3:
1 | class A private constructor(a: Int) { ... } |
IV, Local variable
Local variable
là những variable được khai báo bên trong 1 function. Nó chỉ visible bên trong function và các member của function đó.- Kotlin không cho phép local variable có visiblity modifier vì nó không có ý nghĩa gì cả.