我找到了这个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();
}
}
答案 0 :(得分:1)
由于Hierarchical2
和Hierarchical3
不是静态的,因此需要一个封闭类(Hierarchical)的实例来实例化这些类。
如何做到这一点:
Hierarchical hierarchical = new Hierarchical();
Hierarchical2 hierarchical2 = hierarchical .new Hierarchical2();
声明类Hierarchical2
和Hierarchical3
静态,您可以实现您的方式。
希望它有所帮助。
答案 1 :(得分:1)
您的班级Hierarchical2
是Hierarchical
的内部类,这意味着每个实例都必须在Hierarchical
的实例中创建。但是,由于main()是一个静态方法,因此没有内部类的实例。
如果您将main()的内容移动到一个新的非静态方法中,请说public void champions()
,并让main执行类似
Hierarchical h1 = new Hierarchical();
h1.champions();
这将消除你的错误。
我想知道你在做什么有多重要。你有一些你想要实现的目标吗?我认为你不会从你所写的内容中学到很多关于继承的知识。