java - 分层继承

标签 java inheritance

我找到了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();
    }
}

最佳答案

由于 Hierarchical2Hierarchical3 不是静态的,因此您需要一个封闭类 (Hierarchical) 的实例来实例化这些类。

具体操作方法如下:

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

将类 Hierarchical2Hierarchical3 声明为静态,您可以像您所做的那样实例化。

希望对你有帮助。

关于java - 分层继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832209/

相关文章:

java - 查找符合其中一项条件的对象

java - 适用于 Java 的 Appengine 搜索 API 的配额

Python:继承与组合

javascript - 原型(prototype)对象继承

JavaScript:如何检测ES6类有自己的构造函数?

java - 使用比较器对对象的 ArrayList 进行排序,代码无法访问

java - 获取未读短信数量的更快方法?

java - 方法 getApplicationContext() 未定义 - fragment 问题

java - Java 中的构造函数是否有访问修饰符继承?

java - 安排导出 Google Analytics csv 报告