Я делаю проект, основанный на концепциях наследования, и создал супер-конструктор, который имеет две переменные внутри себя (String, int), этот супер-конструктор затем вызывается внутри вспомогательного конструктора, который унаследовал класс супер-конструкторов. Затем я использую два метода для возврата свойств этих переменных внутри конструкторов. Свойство age выводит штраф, но свойство String возвращает null. Вот код:Переменная внутри конструктора возвращает null?
животных супер-класса
abstract public class Animal
{
int age;
String name;
Animal(String name, int age)
{
this.age = age;
this.name = name;
}
Animal()
{
this("newborn", 0);
}
public String getName() {
return name;
}
public void setName(String newName) {
name = newName;
}
}
Wolf подклассу
public class Wolf extends Carnivore
{
String name;
int age;
Wolf(String name, int age)
{
this.name = name;
this.age = age;
}
Wolf()
{
super();
}
public String getName()
{
return name;
}
public int getAge()
{
return age;
}
}
Основной метод класса
public class Main {
public static void main(String[] args)
{
Wolf newWolf = new Wolf();
System.out.println("Name = " + newWolf.getName());
System.out.println("Age = " + newWolf.getAge());
}
}
Возраст возвращается как 0, который является правильным, но System.out.println("Name = " + newWolf.getName());
, кажется, возвращает null вместо «новорожденного». Любая помощь в решении этой проблемы приветствуется.
Обновление - Мне нужен метод getName()
для другого конструктора, который я не включил в этот пример, так есть ли способ, чтобы они оба существовали?
Удалить GetName() 'метод' из 'Wolf'. это возвращает значение' Wolf .name', который вы никогда не устанавливаете. Удалите 'Wolf.name' тоже. (То же самое касается' getAge() 'и' age' в 'Wolf'). –
Вы обмануты,' age' не возвращает 0 вы думаете, что он возвращается. Он возвращается на престол t 'int', которое оказывается равным 0. Это не тот, который вы указали в конструкторе« Animal ». – Tunaki
Проблема в том, что у меня есть другой конструктор, для которого требуется метод getName(). – Tom