簡體   English   中英

在構造函數中使用“ this”關鍵字使用另一類的方法

[英]Using method of one class from another class using 'this' keyword in constructor

我在一個類中有兩個嵌套類,外部類擴展了另一個類。 結構是這樣的。

    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:錯誤:無法從靜態上下文value = Get_Value();引用非靜態方法Get_Value();”。 我該如何運作?

干杯!

拉傑什。

一種方法是在NESTED2中具有NESTED1的實例。 例如:

private static class NESTED2
  {
    private NESTED1 nested1;
    public NESTED2 (NESTED1 nested1) {
        this.nested1 = nested1;
    }
    public void Method2()
    {
      nested1.Method1();
    }
  }
private static class NESTED2
{
  public void Method2(NESTED1 nested1Instance)
  {
   nested1Instance.Method1();
  }
}

那應該用您的類結構來完成。 而是進行這樣的修改。

private static class NESTED1
{
  public *statc* void Method1()
  {
    ...
  }
}
private static class NESTED2
{
  public *static* void Method2()
  {
    NESTED1.Method1();
  }
}

...您可以不創建任何對象而逃脫。

如果將方法設為靜態,則無需實例化(創建)類對象即可首先調用它們。

暫無
暫無

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

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