2
我正在做一個基於繼承的概念的項目,並創建了一個超級構造函數,它內部有兩個變量(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;
}
}
狼子類
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'方法,即返回狼'值.name',你從來沒有設置過,刪除'Wolf.name'也一樣(在'Wolf'中'getAge()'和'age') –
你被欺騙了,'age'沒有返回0你認爲它正在返回,它正在返回默認狀態t'int'值,它恰好爲0.它不是在'Animal'的構造函數中指定的值。 – Tunaki
問題是,我有另一個需要getName()方法的構造函數。 – Tom