Main > Java | Java labs > Доступ к данным из различных экземпляров одного класса

Доступ к данным из различных экземпляров одного класса

17.04.2012 2 comments » Views: 2,442

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

Вот такой пример:

Результат выполнения:

Как видите, объект Vasya, не только может читать приватные свойства объекта Boss, но так же может и менять их!!! Красота! 🙂

Мне на ум сразу пришла мысль, передать копию объекта, например так:

Результат работы теперь тот, который я бы хотел ожидать:

Еще один тест, аналогичный первому, только с экземплярами потомков этого класса:

Результат, такой же как и в первом случае:

и еще один пример:

Результат:

Как видите, в этом случае мне пришлось поменять модификаторы доступа к переменным в родительском классе с private на protected, т.к. наследуемый класс не имеет доступа к private переменным родительского класса. А так же я переопределил equals.

Выводы:

  • Нужно всегда помнить, что различные экземпляры одного класса имеют доступ ко всем методам и полям друг друга!
  • Потомки имеют доступ ко всем методам родительского класса, если метод наследуется из родителя!
  • Потомки не имеют доступ к приватным методам родительского класса, при доступе к ним из класса наследника!
  • В случае если нужно передать объект и его надо защитить, то нужно передавать его копию!

Author: | Rating: 4/5 | Tags: , ,

2 comments.

Write a comment
  1. Евгений Reply
    11.03.2016 в 3:40 pm
    В этом случае ничего у вас не выйдет. А в вашем примере protected используется как по-умолчанию, да и все.
  2. Евгений Reply
    11.03.2016 в 3:37 pm
    пример с protected будет интереснее, если родителя и детенка разнести по разным пакаджам.

Leave a Reply

Your email address will not be published. Required fields are marked *

Allowed HTML-tags: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>