Using protected Instance Variables
Nếu khai báo các thuộc tính của 1 lớp là public không hạn chế việc truy xuất dễ lỗi và theo quan không hạn chế việc truy xuất dễ lỗi và theo quan điểm software engineering là không tốt.
Nếu các thuộc tính được khai báo là protected thì chỉ có các lớp dẫn xuất mới truy xuất trực tiếp và chỉ có các lớp dẫn xuất mới truy xuất trực tiếp và không cần phải gọi các accessor set hay get của property
Ví dụ: để cho phép lớp dẫn xuất
BasePlusCommissionEmployee2 truy xuất trực tiếp đến các thuộc tính lớp cơ sở đến các thuộc tính lớp cơ sở
Bất lợi khi sử dụng protectedBất lợi khi sử dụng protected Bất lợi khi sử dụng protected
Vì đối tượng lớp suy dẫn có thể đặt 1 cách trực tiếp giá trị của thuộc tính kế thừa mà không sử dụng accessor set của property có thể gán giá trị không phù hợp, làm cho đối tượng ở trạng thái inconsistent.
Ví dụ: có thể gán giá trị âm cho grossSales
Theo nguyên tắc lớp suy dẫn chỉ nên phụ thuộc vào các dịch vụ của lớp sơ sở không nên phụ thuộc vào việc
thực thi dữ liệu của lớp cơ sở. Với các thuộc tính
protected, các method của lớp suy dẫn có thể phụ thuộc vào việc thực thi dữ liệu của lớp cơ sở, nếu thuộc tính protected của lớp cơ sở thay đổi thì tất cả các lớp suy dẫn cũng phải thay đổi theo hiện tượng fragile hay brittle vì 1 thay đổi nhỏ trong lớp cơ sở có thể “break” việc thực thi lớp suy dẫn.