public class Solution {
public static void main(String[] args) {
Person person = new Person();
System.out.println("Age is: " + person.age);
person.adjustAge(person.age);
System.out.println("Adjusted age is: " + person.age);
}
public static class Person {
public int age = 20;
public void adjustAge(int age) {
age = age + 20;
System.out.println("Age in adjustAge() is: " + age);
}
}
}
Разместил здесь саму задачу без решения, задачу я решил, прошу помощи в следующем:
Выполнение программы:
1) создали объект person класса Person.
2) ему присвоился age=20
3) вывели на экран
4) вызвали метод adjustAge(person.age)
5) передали в метод adjustAge(person.age) переменную объекта person
6) вот здесь у меня вопрос по строке "age = age + 20;", исходя из решения, мы должны указать какую именно переменную нужно увеличить на 20 (для какого конкретно объекта) - это понятно. Вопрос в том, откуда берется age после знака равно
MaxT
22 уровень
Прошу объяснить последовательность программы
Архивный
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Даниил
14 октября 2019, 18:19
package com.javarush.task.task04.task0401;
public class Solution {
public static void main(String[] args) {
Person person = new Person();
System.out.println("Age is: " + person.age);
person.adjustAge(person.age);
System.out.println("Adjusted age is: " + person.age);
}
public static class Person {
public int age = 20;
public void adjustAge(int age) {
this.age = age + 20;
System.out.println("Age in adjustAge() is: " + age);
}
}
}
0
Daniil Sboev
4 октября 2019, 07:48
Ты из мэйна получаешь данные в метод и внутри метода это age. Тебе же надо изменить age в классе и проблема в том что и там и там age, поэтому когда в методе ты пишешь age это автоматически age метода, а не класса. А тебе нужно как то изменить age класса - это проблема, т.к. внутри метода изменить age проблемы нет. Возникает вопрос - можно ли из метода обратиться к переменной класса с таким же названием как и внутри метода? Да можно. Почитай про this.
+1
hidden #598481
11 сентября 2019, 09:11
Из аргумента метода adjustAge.
Ты когда вызываешь метод, передаешь число в аргументах. Этим числом инициализируется параметр метода - локальная переменная age:
0
MaxT
11 сентября 2019, 09:14
Спасибо, а туда она тоже попадает отсюда "public int age = 20;"?
0
hidden #598481
11 сентября 2019, 09:25
Опосредованно.
Туда попадает число person.age.
А person.age - это текущее значение поля age объекта person.
Допиши еще раз эти две строки в main, посмотри, что будет дальше.
0