2014-09-17 3 views
0

A protected переменная - это доступ к любому классу внутри пакета и только к подклассу, который extends базовый класс вне пакета.Почему защищенная переменная видима на уровне класса?

Почему Java реализовала это в этом случае, я по умолчанию в пакете вместо private в пакете?
Это побеждает всю цель блокирования доступа к вашим переменным.

Определение защищенного модификатора доступа в Java является то, что если определить classA имеет protected переменную x - то x видно каждый класс в том же пакете, и это также видно на любой класс вне package но extends classA. Я чувствую, что в пределах уровня пакета он должен быть private вместо доступа по умолчанию. Я уверен, что у Java может быть веская причина, и я хочу знать, что это может быть.

+3

Я не понимаю ваш вопрос. –

+0

Определение защищенного модификатора доступа в java заключается в том, что если вы определяете classA, то имеет защищенную переменную x - тогда x видимо для каждого класса в одном пакете, а также для любого класса вне пакета, но расширяет класс A. Я чувствую, что в пределах уровня пакета он должен быть закрытым, а не доступом по умолчанию. Я уверен, что у Java может быть веская причина, и я хочу знать, что это может быть. – user892871

+0

Удивительно, положите все это в свой вопрос. –

ответ

2

Java-пакет - это куча классов, которые (по определению) реализованы одним и тем же парнем и (как правило) работают вместе. Скрытие данных из вашего собственного пакета является контрпродуктивным - вы должны доверять всему в своем пакете, потому что вы написали все.

Если вы действительно хотите скрыть переменную от всех (даже других классов в вашем пакете), просто сделайте ее «частной».

Смежные вопросы