簡體   English   中英

無法從子類訪問方法

[英]Unable to access Method from Subclass

我只是想使用 SubClass Class 中的 Method_In_SubClass() 方法,但我遇到了這些錯誤。 我嘗試將 Method_In_SubClass 更改為 Static 但仍然出現錯誤

public class Sub {

//Method 1 : Non-Static
public void  nonstatictest(){
    System.out.println("This is non-Static method.");
}

//Mehod 2 : Static
public static void statictest(){
    System.out.println("This is static method.");
}

//SubClass 
public class SubClass{

    //Method in SubClass
    public void Method_In_SubClass(){
            System.out.println("This is Method in SubClass");
    }
}


public static void main(String args[]){
        Sub SubObject = new Sub();
        SubClass SubClassobject = new SubClass();
        SubObject.nonstatictest();
        statictest();
        SubClassobject.Method_In_SubClass();

}
}

錯誤:

Sub.java:25: error: non-static variable this cannot be referenced from a static context
            SubClass SubClassobject = new SubClass();
                                        ^
1 error

然后我將 Method_In_SubClass 更改為 static 但收到此錯誤

Error :Illegal static declaration in inner class Sub.SubClass
        public static void Method_In_SubClass(){
                           ^
  modifier 'static' is only allowed in constant variable declarations
Sub.java:25: error: non-static variable this cannot be referenced from a static context
            SubClass SubClassobject = new SubClass();

Main 和 SubClass 都是 class Sub 的成員,您不能引用 class sub 的非靜態成員,它是 Main 中的 SubClass,它是 static 成員。 您需要將整個子類變成 static 而不僅僅是 Method_In_SubClass()。

使其工作的最簡單方法是將 SubClass 設置為 Static

 public static class SubClass{

    //Method in SubClass
    public void Method_In_SubClass(){
            System.out.println("This is Method in SubClass");
    }
}

我假設啟動 class 的子類對象/實例將與父 class 相同,但事實並非如此

子類子類對象 = 新子類();

啟動子類的 object 的正確方法是:

Sub.SubClass SubClassobject = SubObject.new SubClass();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM