我正在試圖做簡單的封裝程序。來源在下面給出。爲什麼對象未被初始化全局使用Java?
package encap;
public class Encap
{
public static void main(String[] args)
{
NewClass1 call = new NewClass1(3);
call.PrintNumber();
}
}
package encap;
public class NewClass1
{
private int numberNewClass1;
NewClass call = new NewClass(getNumberNewClass1());
public NewClass1(int number)
{
setNumberNewClass1(number);
}
public void PrintNumber()
{
// NewClass call = new NewClass(getNumberNewClass1());
System.out.println("NewClass1");
System.out.println(getNumberNewClass1());
System.out.println("NewClass");
System.out.println(call.getNumber());
}
public int getNumberNewClass1()
{
return numberNewClass1;
}
public void setNumberNewClass1(int numberNewClass1)
{
this.numberNewClass1 = numberNewClass1;
}
}
package encap;
public class NewClass
{
private int number;
public NewClass(int number)
{
setNumber(number);
}
public int getNumber()
{
return number;
}
public void setNumber(int number)
{
this.number = number;
}
}
在創建Newclass1的對象我給值3,如應該在Newclass1的私有變量numberNewClass1設置,因爲我已經叫NewClass1構造內的setNumberNewClass1我的知識。
然後,我通過給getNumberNewClass1()方法作爲NewClass的構造函數參數,在全局的「NewClass」中創建了另一個對象「call」。
現在我的問題是,當我打電話NewClass1的PrintNumber()方法中通過調用對象的NewClass的的getNumber()方法,則返回0。但是,如果我創建對象 PrintNumber()方法中,那麼它將返回已發送的值。 PrintNumber()方法在類Encap中調用。
現在我的問題是如果對象crated全局然後NewClass的私有變量沒有被初始化,但如果它是在本地創建然後私人變量獲取價值,爲什麼?
我不知道是什麼你認爲'全球'意味着Java,但這並不意味着什麼。如果你使用了更多不同的類名,你的代碼將會更容易理解。 – EJP
首先,瞭解「全球」所指的是重要的。你的意思是使用公共修飾符或製作靜態對象/變量?你的問題不是很清楚 –
試試'靜'請 –