Xin chào ! khi một class có thuộc tính là private
thì các class khác khi sử dụng thuộc tính đó phải dùng phương thức set
và get
. em muốn hỏi là tại sao ban đầu mình không khai báo luôn là public
để các class khác muốn sử dụng thì dùng this.abc
, this.xyz
?
Tại sao phải dùng setter và getter?
Bạn muốn người khác có thể vào nhà bạn thoải mái hay là phải có chìa khóa mới vào được ??
Để xử lý giá trị trước khi gán/lấy.
Ví dụ đơn giản:
Bạn tạo 1 lớp hình chữ nhật, có 2 thông số dài và rộng. Nếu cho gán trực tiếp, số có thể âm, nhưng khi dùng setter, nó đảm bảo dữ liệu không âm.
Lớp GregorianCalendar
cũng có cách thực hiện tương tự, đảm bảo dữ liệu thời gian là chuẩn xác.
sao dùng set
lại không gán được số âm vậy ạ ?
Bạn viết thêm vào để kiểm tra thôi
Ví dụ mà!
Tùy theo mục đích chứ bạn.
Vì thiết kế ban đầu quên mất cái vụ getter và setter nên Java có nó mấy method thừa thừa vậy đó
Các ngôn ngữ sau này đều có quy ước cái nào là setter, getter hay private field. Chỉ cần đặt tên field là tự động sinh setter và getter cho mình, chỗ nào cần thêm logic thì override lại setter hoặc getter cần thiết thôi.
Hi Lính Mới.
Dùng get set trong các ngôn ngữ hướng đối tượng thể hiện tính đóng gói của nó. Việc tách rời dữ liệu và giao diện sử dụng nó tạo ra tính linh hoạt trong lập trình.
VD : Kiểm tra dữ liệu truyền vào hoặc lấy ra. Mở rộng code v.v.v…