2017-03-16 118 views
0

我發現了這個javatpoint的代碼。但是當我嘗試編譯它時,它給了我一個錯誤。分層繼承

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
    No enclosing instance of type Hierarchical is accessible. Must qualify the allocation with an enclosing instance of type Hierarchical (e.g. x.new A() where x is an instance of Hierarchical). 
    No enclosing instance of type Hierarchical is accessible. Must qualify the allocation with an enclosing instance of type Hierarchical (e.g. x.new A() where x is an instance of Hierarchical). 
    at Inheritance.Hierarchical.main(Hierarchical.java:28) 

爲什麼我得到這個錯誤? Eclipse告訴我讓類是靜態的,但我不明白爲什麼?

package Inheritance; 

public class Hierarchical { 

    static void bayern() { 
     System.out.println("bayern"); 
    } 

    class Hierarchical2 extends Hierarchical { 

     static void barcelona() { 
      System.out.println("barcelona"); 
     } 
    } 

    class Hierarchical3 extends Hierarchical { 
     static void Madrid() { 
      System.out.println("madrid"); 
     } 
    } 

    public static void main(String[] args) { 
     Hierarchical2 h2 = new Hierarchical2(); 
     Hierarchical3 h3 = new Hierarchical3(); 
     h2.barcelona(); 
     h2.bayern(); 
     h3.Madrid(); 
     h3.bayern(); 
    } 
} 
+3

[Java內部類和靜態嵌套類]的可能重複(http://stackoverflow.com/questions/70324/java-inner-class-and-static-nested-class) –

回答

1

由於Hierarchical2Hierarchical3不是一成不變的,需要封閉類(層次)的實例,實例化論文類。

這裏如何做到這一點:

Hierarchical hierarchical = new Hierarchical(); 
Hierarchical2 hierarchical2 = hierarchical .new Hierarchical2(); 

聲明類Hierarchical2Hierarchical3靜態的,你可以insantiate你的方式。

希望它的幫助。

1

Hierarchical2類是內部類的Hierarchical,這意味着每個實例必須的Hierarchical一個實例中創建。但是,由於main()是一個靜態方法,因此內部類不屬於它的實例。

如果移動的主要內容()到一個新的非靜態方法,說public void champions(),並有主做類似

Hierarchical h1 = new Hierarchical(); 
h1.champions(); 

這將讓你擺脫錯誤的。

我不知道是否有很多點你在做什麼。你有沒有想要實現的目標?我認爲你不會從你寫的東西中學到很多東西。

+0

那麼我的基本目標是改善我的基地。我決定做任何Android應用程序作爲我的最後一年項目,但我的Java /高級Java基礎是非常薄弱的​​,雖然我很熟悉它。 Javatpoint,Tutorialpoint也是我提到的一些網站。如果你能爲我推薦一種更好的方式來學習和改善我對這門語言的指令,那麼它會非常有用。請記住,除了互聯網之外,我幾乎沒有外部幫助 – Junder93