-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
||||||
1 | ||||||
Доступ к переменной через конструктор при перегрузке конструктора31.08.2018, 17:37. Показов 4630. Ответов 45
Метки нет (Все метки)
Приветствую ребята.
Изучаю Java. Наткнулся на такую штуку.
Филя 12 Петр 0 У меня вопрос, почему "Петр 0" а не "Петр 12" ?
0
|
31.08.2018, 17:37 | |
Ответы с готовыми решениями:
45
Получить доступ к переменной из конструктора самой формы для функции При перегрузке операторов нужно получить доступ к элементу матрицы Ошибка в перегрузке конструктора копирования Почему в списке инициализации конструктора дочернего класса нельзя вызывать конструктор родительского через его пространство имён? |
-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
||||||
31.08.2018, 17:46 [ТС] | 3 | |||||
0
|
Автоматизируй это!
|
|
31.08.2018, 17:49 | 4 |
Favorskij, да, обращается, но ты ее для второго объекта не задал, потому берется значение по умолчанию: для примитивов это 0, для объектов нулл. Внимание! важно! yes и yes1 это разные объекты, их поле возраст не общее, то есть у каждого свое. то что ты Филе дал 12 лет еще не значит что и пете столько же.
1
|
-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
|
31.08.2018, 17:50 [ТС] | 5 |
Если построить похожую конструкцию с методами, то такого явления не не наблюдается. А вот тут, почему то вот такая штуку, вот я и не могу понять почему.
0
|
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
|
||||||
31.08.2018, 17:51 | 6 | |||||
Сообщение было отмечено Favorskij как решение
Решение
Favorskij, ваше предположение станет действительным, если объявить age статическим:
1
|
Am I evil? Yes, I am!
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
|
|
31.08.2018, 17:52 | 7 |
Обрати пристальное внимание на главу про классы и объекты.
Класс - это, по сути, шаблон, по которому ты создаешь объекты. Т.е. каждый раз, когда ты используешь new - ты создаешь новый объект, который отличается от предыдущего, даже если ты передал в конструктор те же самые параметры.
1
|
-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
|
31.08.2018, 17:52 [ТС] | 8 |
Хорошо. Если я ниже создам метод, и сделаю в этом методе System.out.println(this.age); и вызову его, то будет нуль. Почему? Ведь там есть параметры, а именно 12. Но он все ровно дает 0
0
|
Автоматизируй это!
|
|
31.08.2018, 17:54 | 9 |
Сообщение было отмечено Favorskij как решение
Решение
если сделаешь поле общим private static int age; то тогда и пете станет 12, но тогда это будет возраст для всех объектов твоего класса, ты не сможешь разные возрасты делать им, только 1 на всех.
1
|
406 / 278 / 93
Регистрация: 14.03.2017
Сообщений: 777
|
|
31.08.2018, 17:54 | 10 |
Favorskij, new Yes - вы создаете НОВЫЙ объект, у которого все переменные будут иметь DEFAULT значения.
1
|
-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
|
31.08.2018, 17:58 [ТС] | 12 |
0
|
Am I evil? Yes, I am!
17573 / 10326 / 2820
Регистрация: 21.10.2017
Сообщений: 22,388
|
|
31.08.2018, 17:59 | 13 |
1
|
-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
|
31.08.2018, 18:03 [ТС] | 14 |
Да, спасибо, начинаю понимать.
Добавлено через 54 секунды Уяснил. Спасибо. Добавлено через 47 секунд Да, я понял. Оно будет для всех одно. Спасибо.
1
|
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
|
|
31.08.2018, 18:43 | 15 |
Сообщение было отмечено Favorskij как решение
Решение
https://www.cyberforum.ru/java/thread2250765.html - дебагер применяй и будешь видеть все в динамике))
1
|
-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
|
01.09.2018, 10:19 [ТС] | 16 |
0
|
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
|
|
01.09.2018, 10:45 | 17 |
Favorskij, я тож не понимаю, почему каждая книга не начинается с описания дебагинга
0
|
-19 / 23 / 8
Регистрация: 27.07.2010
Сообщений: 496
|
|
01.09.2018, 10:48 [ТС] | 18 |
Спасибо за отладку. Очень хорошо дает понимание механизма Java
Добавлено через 47 секунд Ага, неговори.
0
|
2677 / 1995 / 496
Регистрация: 17.02.2014
Сообщений: 9,357
|
|
01.09.2018, 10:52 | 19 |
С днём знаний!
0
|
-11 / 4 / 0
Регистрация: 26.01.2018
Сообщений: 199
|
|
01.09.2018, 12:39 | 20 |
Favorskij, Конструктор инициализирует объект. Фактические параметры объекта и формальные конструктора должны совпадать по типу и длине, иначе будет ошибка компиляции вида: actual and formal argument lists differ in length.
0
|
01.09.2018, 12:39 | |
01.09.2018, 12:39 | |
Помогаю со студенческими работами здесь
20
Как конструктор копий получает доступ к private переменной CopySource.Buffer в этом коде? Прохождение переменной JSON через конструктор Присвоение значения переменной класса через конструктор Ошибка "Доступ только для чтения" при перегрузке оператора Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |