0

デフォルトのコンストラクターを持つ抽象クラスとプライベート コンストラクターを持つクラスの違いは何ですか?

また、別の疑問があります。以下のこのプログラムを検討してください。誰でも私に説明してもらえますか?そのようなコードは役に立ちますか?

abstract class AbstractAndPrivate 
{
AbstractAndPrivate()
{
     AbstractAndPrivate ref= new AbstractAndPrivate(1) {

        @Override
        int m2() {
        // TODO Auto-generated method stub
        return 0;
        }
                    };  

            }
void m1()
{
    System.out.println("m1() accessed");
}
abstract int m2();

AbstractAndPrivate(int a)
{

}
public static void main(String[] args) {

System.out.print("hello ");

 AbstractAndPrivate ref= new AbstractAndPrivate() {public int m2(){return 1;}}; 
 System.out.println(ref);
 ref.m1();
 ref.m2();
}
}
4

2 に答える 2

3

デフォルトのコンストラクターを持つ抽象クラスとプライベート コンストラクターを持つクラスの違いは何ですか?

デフォルトのコンストラクターがある場合は、サブクラスから呼び出すことができます。privateの場合、プライベート コンストラクターにアクセスできる唯一のコンテキストであるため、同じクラス内にのみサブクラスを作成できます。

あなたが提供したコードは、これらの状況のどちらでもないことに注意してください。パッケージで保護されたパラメーターなしのコンストラクターを明示的に提供しています。これはプライベートではなく、デフォルトのコンストラクターでもありません。

クラスが抽象かどうかは、それが提供するコンストラクターと直交していますが、プライベート コンストラクターのみを持つ抽象クラスでは、宣言内でインスタンスを作成することに頼るのではなく、インスタンスを作成するために宣言クラス内でサブクラスを作成する必要ありますクラス。

于 2013-12-19T15:15:46.943 に答える
0

また、抽象クラスには、サブクラスによって実装する必要がある抽象メソッドを含めることができます (それらも抽象でない限り)。

編集:-1?さあ、抽象メソッドは、抽象クラスとプライベートコンストラクターを持つクラスの論理的な違いを説明するようなものでもあります。お願いします...

于 2013-12-19T15:16:18.870 に答える