01/10/2018, 17:04

Tại sao phải cần có getter và setter

Cho em hỏi ngu thuộc tính thì private còn get set thì public thế nó có khác gì việc để thuộc tính là public đâu ạ. Thấy đọc trên google bảo là dễ kiểm soát không cho sửa linh tinh các thuộc tính nhưng em thấy vẫn sửa được bình thường qua setter mà. Mong mọi người giải thích giúp em với.

Nguyễn Nam viết 19:16 ngày 01/10/2018

get thì cứ trả về giá trị thôi, đôi khi mình muốn trả về 1 thuộc tính khác nhưng không phải thuộc tính thật.
VD: kiểu Date qua hàm get trả về kiểu String hoặc int hoặc long int này.
set là cài đặt 1 thuộc tính nào đó nhưng có thể có giới hạn, mình phải kiểm tra nó.
VD: class phân số có 2 thuộc tính a và b biểu diễn a/b (b!=0) và khi thay đổi thuộc tính phải kiểm tra b có khác 0 thì gán vào thôi còn nếu không thì không làm gì cả có thể là mình in báo lỗi giá trị nhập vào này.

Nguyễn Đình Anh viết 19:18 ngày 01/10/2018

Khi sử dụng getter và setter, các caller hoặc component sẽ không thể toàn quyền tác động lên field thuộc class đó nữa. Lúc này, nếu muốn truy cập field thuộc class thì chỉ có 1 lối vào duy nhất là setter và 1 lối ra duy nhất là getter. Vậy chả phải an toàn hơn sao ?

Bài liên quan
0