У меня есть следующая программа:
public class Driver {
public static void main(String[] args) {
Animal dog = new Dog("larry");
dog.speak();
}
}
public abstract class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public abstract void speak();
}
public class Dog extends Animal {
private String name; // is this even needed?
public Dog(String name) {
super(name);
}
@Override
public void speak() {
System.out.println("I am " + name);
}
}
При запуске этой программы печатается I am null
, а это не то, что я хочу.
Почему бы просто не использовать переменную Animal
, определенную name
, и распечатать larry
?
Как правильно это сделать?
Если я удаляю name
из класса Dog
, можно ли ссылаться на переменную имени Animal
, сохраняя при этом private
?
Если да, то как?