Каждый раз, когда вы вызываете конструктор, вы получаете отдельный экземпляр объекта. Объект, созданный в Main.java
с именем, сохраняется в локальной переменной p
, которая существует только в области действия Main.java
. В List.java
вы создаете второй объект с возрастом, но без имени. Он также хранится в переменной с именем p
, но она находится в области действия List.java
и не имеет ничего общего с ранее созданным объектом.
Похоже, вы хотите добавить имя к более ранний объект, а не новый. Для этого вы должны передать первый объект в качестве параметра в код, который добавляет возраст, возможно, так:
public void addAge(Person p) {
System.out.println("Enter your age:");
int age = scan.nextInt();
p.setAge(age); // will have to make this method in the Person class
System.out.println("Thank you for shopping with us, "+p.getName());
}
Вызов Person p = new Person(age);
дает совершенно новый объект Person, у которого еще нет имени.