Почему это печатает null, а не java ?
i know about variable shadowing but i don't think below is case of variable shadowing <pre> public class Main { public static void main(String[] args) { Person p = new Person(); p.setName("Java"); // set name to be =Java Employee e = new Employee(); e.show(); // prints null } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } } class Employee extends Person{ void show (){ System.out.println(getName()); } }
как вы, ребята, можете видеть, класс "сотрудник" расширяет "лицо", таким образом, у него будут все его поля и метод, верно ? тогда почему, когда я печатаю "имя" в "сотруднике", он печатает null, разве это не то же самое имя, которое я установил в "Java" ? я пытался сделать это поле общедоступным, но оно все равно не работало, я просто не понимаю, как метод `getName()` возвращает значение `name`, которое я установил для него методом `setName ()`, и оно равно нулю !
Что я уже пробовал:
i tried many things but couldn't figure it out.
CHill60
Вы установили e, чтобы быть a новый Работник. Это подразумевает и нового человека. Попробуйте установить его на человека p, который у вас уже есть
hiwa doski
О да, это имеет смысл, но как установить employee на нового человека, который у меня уже есть, поскольку ссылочная переменная Employee не может указывать на объект person ?
CHill60
Решение Afzaal по 1 лучше, чем я мог объяснить :-)
hiwa doski
да, я понял, спасибо вам, ребята.