[英]How to access a method of Extended Class from nested class?
我在一個類中有兩個嵌套類,外部類擴展另一個類。 結構是這樣的。
public class EXTENSION_CLASS
{
public int Get_Value()
{
return(100);
}
}
public class OUTER extends EXTENSION_CLASS
{
public static class NESTED1
{
public void Method1()
{
int value=0;
value=Get_Value();
System.out.println("Method1: "+value);
}
}
public static class NESTED2
{
NESTED1 Nested1_Instance=new NESTED1();
public void Method2()
{
Nested1_Instance.Method1();
}
}
public void run()
{
NESTED2 Nested2_Instance=new NESTED2();
Nested2_Instance.Method2();
}
public static void main (String[] args)
{
OUTER New_Class=new OUTER();
New_Class.run();
}
}
我期待輸出:“Method1:100”。 但是,我得到輸出:“OUTER.java:16:錯誤:非靜態方法Get_Value()不能從靜態上下文值= Get_Value();”引用。 我怎樣才能使這個工作?
干杯!
拉傑什。
從NESTED1
和NESTED2
的聲明中刪除static
修飾符,如下所示:
public class NESTED1
您正在嘗試對非靜態成員進行static
引用。
這意味着您正在嘗試從類的靜態成員訪問實例成員。
要解決此問題,請從NESTED1和NESTED2分支中刪除static
修飾符。
或者,如果您不想刪除static
修飾符,則必須創建OUTER
或EXTENSION_CLASS
類的對象,然后使用該對象調用Get_Value()。
例如:
public void Method1()
{
int value=0;
EXTENSION_CLASS ext = new EXTENSION_CLASS ();
value=ext.Get_Value();
System.out.println("Method1: "+value);
}
要么
public void Method1()
{
int value=0;
OUTER outer = new OUTER();
value=outer.Get_Value();
System.out.println("Method1: "+value);
}
如果要將嵌套類保持為靜態,則必須在Method1()中創建OUTER實例以訪問Get_Value()。
public void Method1()
{
int value=0;
OUTER outer = new OUTER();
value=outer.Get_Value();
System.out.println("Method1: "+value);
}
錯誤說明了每一件事。 您不能從靜態方法/類中調用非靜態方法。 要使其工作,只需在EXTENSION_CLASS中將靜態關鍵字添加到'Get_Value'方法即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.