JAVA CORE - Object Orientation (Update Polymorphism - 5/8)

nhờ ví dụ này của bạn mà mình hiểu thêm về chỗ Reference copy này. Khi parametter của một method là một Object thì nó chỉ là tạo ra các bản copy. Trước giờ mình cứ tưởng là mọi thay đổi trên parameter này đều ảnh hưởng đến parameter gốc. Cảm ơn nhiều.

OK cho là thừa thải đi thì vậy nếu ko sử dụng set/get thì làm sao mình có thể lấy được giá trị của size hoặc set lại giá trị ? Bạn nói thêm chỗ này nhé.

thế theo bạn nên dùng cái gì để thay cho set và get :flushed:

1 Like

thay bằng cách mà bạn thấy được cho lớp của bạn hay module của bạn, nếu thấy không được hoặc là có chắc chắn không gì thay đổi thì bạn mới dùng kiểu get và set

1 Like

Trong Java, pass by reference(ảnh hưởng tới parameter gốc) được áp dụng cho tất cả các parameter hay thực ra là truyền vào vị trí vùng nhớ của parameter,
trừ các parameter là primitive type (byte, String, char, int, long, double) sẽ là pass by value, hay còn gọi là truyền vào giá trị của parameter
pass by ref: tham chiếu
pass by value: tham trị
=> đừng bao giờ để missing kiến thức nền tảng này nhé

  • Get/set chỉ có 2 vấn đề chính: làm lộ ra các thuộc tính trong class và tăng độ dày của file source lên(byte-code). Nhưng về tổng quan thì nó chả có vấn đề gì cả.
  • Việc để cho Class hoặc trong package có thể access trực tiếp vào thuộc tính của class thì khi debug rất khó để biết chỗ nào đã thay đổi dữ liệu, đặc biệt là parallel application. Thì lúc này Get/Set chính là vị cứu tinh.
  • Thêm nữa trong bài viết Evil thì tác giả viết từ 2003, nhưng sang 2004 thì java 1.5 ra đời, thứ mà chứa package reflect, có thể access trực tiếp vào các thuộc tính bất chấp nó là private hay public.
2 Likes

Bài viết hay quá xá !!

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