2017-03-16 80 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