2012-05-03 12 views
0

私は次のように多くの民間内部の匿名クラスが含まれていClass1の持っている:私はそれがすべてのこれらのクラスを継承しますが、新しいと交換しないようにすることができるクラス1からクラス2を継承する場合Javaのいくつかのプライベート内部クラスを継承しないことは可能ですか?

ClassAInterface var1=new ClassAInterface { 
..... 

を?したがって、これらのクラス変数を使用するすべてのメソッドは、継承されたクラスのオブジェクトのみを使用します。それとも別の方法がありますか? 私は、メソッドのロジック、仕事の論理を継承したいと思いますが、データ構造を継承したくないです。 おかげ

+1

プライベートであるものは継承できません。保護された/パブリックなメンバーだけが継承できます。 – Bernard

+0

docsから:サブクラスは、そのスーパークラスからすべてのメンバー(フィールド、メソッド、およびネストされたクラス)を継承します。 – user810430

+0

http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html – user810430

答えて

1

あなたは、ネストされたクラスを使用するか、また、静的な内部クラスと呼ばれる必要があります:あなたがClass1の継承時にこの1つがアクセス可能であるため、

public class Class1{ 

    // fields and methods for Class1 

    protected static MyInnerClassA{ 

     //some fields methods here for MyInnerClassA 
    } 
} 

はこのように、あなたはMyInnerClassAの新しいインスタンスを作成することができます。要するに、静的キーワードは、この場合、Innerクラスをその親クラスから独立させることを可能にします。

0

「メソッド、ロジックのロジックは継承しますが、データ構造は継承しない」を継承する場合は、継承ではなくinterfacecompositionを使用する必要があります。

1

プライベートなものは、サブクラスで継承することはできません。

関連する問題