2017-03-16 13 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
Hierarchical2以来

Hierarchical3あなたは論文のクラスをインスタンス化する囲むクラス(階層)のインスタンスを必要とし、静的ではありません。 Hierarchical2と静的Hierarchical3、あなたが行った方法をinsantiateでき

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

宣言クラス:ここ

は、どのようにそれを行います。

希望すると助かります。

1

あなたのクラスHierarchical2は、各インスタンスは、Hierarchicalのインスタンス内で作成されなければならないことを意味し、Hierarchical内部クラスです。しかし、main()は静的メソッドであるため、内部クラスが属するインスタンスは存在しません。

あなたは、public void champions()を言う、新たな非静的メソッドへ)(メインのコンテンツを移動して、エラーを取り除くでしょう

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

ような何かを行うメイン持っている場合。

あなたがしていることに多くの点があるのだろうかと思います。達成しようとしている目標がありますか?あなたが書いていることから継承について多くを学ぶとは思わない。

+0

私の基本的な目的は、私の基地。私は最終的な年のプロジェクトとして任意のアンドロイドアプリケーションを作ることに決めたが、私はそれに精通している私のJava /高度なJavaベースは非常に弱いです。 Javatpoint、Tutorialpointは私が参照したサイトのいくつかです。あなたがこの言語で私の命令を学び、改善するよりよい方法を私に勧めてくれれば、本当に役に立ちます。私はインターネットのほかに外部の支援はほとんどないことを覚えておいてください – Junder93

関連する問題