Tại sao phải dùng setter và getter?

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 setget . 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 ?

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 ??

4 Likes

Để 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.

4 Likes

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 :wink:

5 Likes

Ví dụ mà!

Tùy theo mục đích chứ bạn.

4 Likes

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 đó :kissing:

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.

5 Likes

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…

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?