1

抽象クラスについて質問があります。

まず第一に...私はグーグル翻訳を使用しています、申し訳ありません:(理解していただければ幸いです。

抽象クラスをインスタンス化できない場合、正確には、このコードは何ですか:

public class Ppal {

public void start(){

    ABS clsAbs = new ABS() {

        @Override
        public void absMetod() {
        }
    };

    clsAbs.metod();
}
}

ABS:

public abstract class ABS{

public void metod(){}
public abstract void absMetod();

}

ABS clsAbs = new ABS () {...これは事例ではないでしょうか。clsAbs は使用できますが、Abstract クラスは使用できません。抽象化のモデルを作成するためだけに使用できます...

匿名クラスとして使用できますが、これ ( ABS clsAbs = new ABS () {...) は匿名ではありません。

事前にどうもありがとうございました!

4

2 に答える 2

12

を拡張する匿名クラスをインスタンス化していますclass ABS。そして、この無名クラスはすべての抽象メソッドを定義しているため、インスタンス化できますABS(Nebelmann に感謝)。

public class Foo extends ABSを実装するようなクラスを作成しても同じです。absMetod()

そして、次のことができます:ABS bar = new Foo()

于 2013-01-22T11:03:34.077 に答える
1

理解する必要があるのはこれだけです

ABS clsAbs = new ABS() {

        @Override
        public void absMetod() {
        }
    };

ABSクラスを拡張する匿名クラスを作成しながら、抽象メソッド absMetod() を実装しています

于 2013-01-22T11:09:07.943 に答える