Tính đóng gói là một trong bốn tính chất cơ bản của lập trình hướng đối tượng Java
Tính đóng gói là kỹ thuật giấu thông tin không liên quan và hiển thị ra thông tin liên quan. Mục đính chính của đóng gói trong Java là giảm thiểu mức độ phức tạp phát triển phần mềm

Để đạt được tính đóng gói chúng ta cần:
Ví dụ: Tạo một lớp MyClass
id: kiểu dữ liệu String và privatename: kiểu dữ liệu String và publicclass MyClass(private val id: String, val name: String)
Tiến hành xem các giá trị của MyClass
class MyClass(private val id: String, val name: String) {
override fun toString(): String = "Class $name, Id is $id"
}
fun main() {
val a = MyClass(id = "abc", name = "Class A")
println("My Class A has name is ${a.name}")
}
Chúng ta khởi tạo một đối trương của lớp MyClass.
id là private nên không thể get giá trị bằng a.id được.name là public nên có thể get giá trịCâu hỏi là chúng ta có thể thay đổi giá trị id và name của đối tượng a được không?
Trả lời là không
id : là biến private nên từ phía client khi sử dụng không biết, không truy cập đượcname: là biến public nhưng lại khai báo val vì thế từ phía sử dụng client chỉ có phương thức getterclass MyClass(private val id: String, val name: String)
fun main() {
val a = MyClass(id = "abc", name = "Class A")
// Val cannot be reassigned
a.id = "bcd"
a.name = "Class AAAA"
}