2011-04-19 17 views
3

Possible Duplicate:
How to make an outer class inherited from an inner class内部クラスから継承する方法

私が知りたい他のクラスの内部クラスからいくつかのクラスを継承できますか?
以下のコードを実行したいが、エラーが出る。

public class Computer { 

    int model; 

    Computer(int i) { 
     model = i; 
    } 

    public class HardDrive {  
     int size; 

     public HardDrive(int i) { 
      size = i; 
     } 

     public HardDrive() { 
      size = 40; 
     } 
    } 
} 

そしてメインは、次のとおりです。

no enclosing instance of type inner.inherit.Computer is in scope

+0

新しい質問をする前に検索を使用してください。 5月の質問はすでにSOで尋ねられています。あなたの答えはすぐに見つかるかもしれません。 –

+0

@brian私は尋ねる前に検索しましたが、私はそれを見つけることができません、なぜ私はこれを見つけることができないのかわからない、あなたの助けのためのタンックス。 – Am1rr3zA

答えて

0

は私(See)のために正常に動作するようです:

class SCSI extends Computer.HardDrive { 

    SCSI(Computer c) { 
     c.super(80); 
    } 
} 

私はこのエラーを取得します。 SCSIは、コンピュータと同じ名前空間にあるか、他SCSIComputer内の別の内部クラスではない場合、あなたはHardDriveは、静的にする必要があり

class SCSI extends <namespace>.Computer.HardDrive { 
+1

もっと詳しく教えてもらえますか、私はあなたの名前空間の意味を理解できません:( – Am1rr3zA

+0

@ Am1rr3za Javaで申し訳ありませんパッケージです –

+0

はい、彼らは同じパッケージに入っていますが、 "c.super(80);" – Am1rr3zA

0

を使用していることを確認してください。

+0

HardDrive Staticは私の問題を解決しませんでした。 – Am1rr3zA

0

HardDriveを内部静的クラスにするとうまくいくと思います。その理由は、 "通常の"内部クラスは、包含するクラスのインスタンスとの関係を持っているからです(例えば、Computer.thisHardDriveに書くことによってコンピュータのthisにアクセスできる)。そのため、コンパイラがコンピュータインスタンスを範囲。 HardDriveを静的にすると、内部クラスと外部クラスのインスタンス間にそのような接続が存在しないため、制限なく継承できます。

関連する問題