1 / 1 / 0
Регистрация: 23.09.2015
Сообщений: 67
|
||||||
1 | ||||||
Объясните почему код выполняется именно так (private)29.12.2018, 12:01. Показов 2805. Ответов 28
Добрый день коллеги! Всех с наступающим! Есть вот такой кусок кода :
При создании экземпляра класса Soluton() далее описывается новый метод класса? и поведение getName() тоже пока не понятно. Буду благодарен тому кто разъяснит.
1
|
29.12.2018, 12:01 | |
Ответы с готовыми решениями:
28
Объясните почему работает именно так? Магия Java или объясните, почему так Элементарная задача с Циклом. Почему код выполняется именно 8 раз? Почему именно так ?! |
29.12.2018, 18:45 | 21 | |||||
NiceJacket, Да тут я ошибся. Действительно. Нет определения класса в методе.
Добавлено через 1 час 39 минут Уточнение к моему коду:
0
|
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
|
|
29.12.2018, 19:05 | 22 |
0
|
vvm28
|
29.12.2018, 19:14
#24
|
Не по теме: NiceJacket, Молодец.
0
|
NiceJacket
|
29.12.2018, 19:17
#25
|
Не по теме: О какая у нас полемика тут развелась ) Aviz__, присоединялся бы ))
0
|
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
|
|
29.12.2018, 19:26 | 26 |
0
|
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
|
|
29.12.2018, 20:17 | 27 |
Ну это-то понятно всем))
Я думаю была заковыка в том что наш суперкласс == внешнему классу. (введеный вами super.getName() меня запутал). Методом super.getName() , наш анонимный класс через родителя видит приватные поля и методы Solution, и его Solution будет тот что "The Darkside Hacker" а не "Риша".Ведь если подумать почему наш аннонимный класс который наследуется от Solution (и не видит его приватные поля и методы) в своем описании System.out.println("getName = " + getName()); имеет доступ getName() к тому чего не видит?Добавлено через 11 минут Нет, описывается новый класс. Он тоже Soluton() но более конкретный - это его наследник (или тот кто имплементирует, в случае интерфейсов). Вот мне тоже хотелось бы более развернутого разяснения (в случае с приватными полями). Предположения есть, но почитать не нашел где. Суть предположений : System.out.println("это равно " + (Soluton.this.getName() == getName())); // это равно true А вот почему хотелось бы более подробно. Добавлено через 12 минут Хочу сам себя выправить. Вот так я не считаю : Не по теме:
Solution("The Darkside Hacker") , вот он и видит приватные поля, и поле getName() для него будет "The Darkside Hacker".
0
|
29.12.2018, 21:16 | 28 | ||||||||||
ViktorFX, Если написать
Добавлено через 14 минут Мы можем вставить блок инициализации и добавить свою переменную name в анонимный класс:
1
|
27.06.2019, 22:37 | 29 | ||||||||||
PS. Здесь мне нужно сделать уточнение.
Я написал
Здесь я просто задаю переменную типа String - это не реальное имя экземляра класса, а только некоторая заданная мной переменная. Так я не задаю "реальное" имя экземпляру класса, а как-то обозначаю экземпляр класса. То есть, как вы понимаете я задал переменную, чтобы просто как-то обозначить этот экземпляр класса. Но в таком виде у меня будут одинаковые имена для всех экземпляров этого класса. Чтобы немного доработать код можно дописать метод setName, чтобы задавать переменную
теряется. А смысл его использования это сокрытие данных внутреннего анонимного класса от внешнего воздействия, с целью предотвращения повреждения данных извне.
0
|
27.06.2019, 22:37 | |
27.06.2019, 22:37 | |
Помогаю со студенческими работами здесь
29
Почему именно так правильно? Groovy Почему ObjectMapper работает именно так ОВЕН и др. Почему именно так измеряют??? Почему функция работает именно так? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |