JavaA2Z

KAB-studio > プログラミング > JavaA2Z > デフォルトコンストラクタとは

デフォルトコンストラクタ

日本語 掛かり付け大工
英語 default constructor
ふりがな でふぉるとこんすとらくたー
フリガナ デフォルトコンストラクター

解説

コンストラクタの種類のひとつ。
作らなくても存在するコンストラクタ
クラスコンストラクタを全く持たない場合に、コンパイラが自動的に作成する。ソースコード上は存在しない。
引数は持たず、実装super()によりスーパークラスコンストラクタ呼び出すのみであり、当然フィールド初期化等はわない。
デフォルトコンストラクタは、引数を持つコンストラクタを作ると消えてしまうため、その場合には引数のないコンストラクタを作る必要がある。
というよりは、基本的にデフォルトコンストラクタは使用すべきではない。引数を持つコンストラクタを作るとデフォルトコンストラクタがなくなるのは、もし存在していたら「フィールド初期化し忘れ」が発生する可能性大のためである。
たとえフィールド初期化が必要なく、デフォルトコンストラクタのみで事足りるとしても、安全性の面から、引数なしのコンストラクタを作成することを勧める。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // コンストラクタを持たないクラスでもインスタンスを作れます。
        // これは、見えないコンストラクタ「デフォルトコンストラクタ」が
        // 存在するためです。
        new NotImplementedConstructor();

        // 引数付きコンストラクタだけを持つクラスの場合、
        // デフォルトコンストラクタは消えてしまいます。
        // new ImplementedParameterConstructor();
        // コンストラクター ImplementedParameterConstructor() は未定義です。

        // 代わりに引数なしコンストラクタを作れば
        // 同じように呼び出すことができますが、もはやこれは
        // 「デフォルトコンストラクタ」ではありません。
        new ImplementedConstructor();
        // ImplementedConstructor#ImplementedConstructor()
    }
}

/**
*   コンストラクタを持たないクラス。
*/
class NotImplementedConstructor
{
}

/**
*   引数付きコンストラクタだけを持つクラス。
*/
class ImplementedParameterConstructor
{
    /**
    *   引数付きコンストラクタ。
    */
    public ImplementedParameterConstructor( int i )
    {
        System.out.println( "ImplementedParameterConstructor#ImplementedParameterConstructor( int ): " + i );
    }
}

/**
*   コンストラクタを持つクラス。
*/
class ImplementedConstructor
{
    /**
    *   引数なしコンストラクタ。
    */
    public ImplementedConstructor()
    {
        System.out.println( "ImplementedConstructor#ImplementedConstructor()" );
    }

    /**
    *   引数付きコンストラクタ。
    */
    public ImplementedConstructor( int i )
    {
        System.out.println( "ImplementedConstructor#ImplementedConstructor( int ): " + i );
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        // コンストラクタを持たないクラスでもインスタンスを作れます。
        // これは、見えないコンストラクタ「デフォルトコンストラクタ」が
        // 存在するためです。
        new NotImplementedConstructor();

        // 引数付きコンストラクタだけを持つクラスの場合、
        // デフォルトコンストラクタは消えてしまいます。
        // new ImplementedParameterConstructor();
        // コンストラクター ImplementedParameterConstructor() は未定義です。

        // 代わりに引数なしコンストラクタを作れば
        // 同じように呼び出すことができますが、もはやこれは
        // 「デフォルトコンストラクタ」ではありません。
        new ImplementedConstructor();
        // ImplementedConstructor#ImplementedConstructor()
    }
}

/**
*   コンストラクタを持たないクラス。
*/
class NotImplementedConstructor
{
}

/**
*   引数付きコンストラクタだけを持つクラス。
*/
class ImplementedParameterConstructor
{
    /**
    *   引数付きコンストラクタ。
    */
    public ImplementedParameterConstructor( int i )
    {
        System.out.println( "ImplementedParameterConstructor#ImplementedParameterConstructor( int ): " + i );
    }
}

/**
*   コンストラクタを持つクラス。
*/
class ImplementedConstructor
{
    /**
    *   引数なしコンストラクタ。
    */
    public ImplementedConstructor()
    {
        System.out.println( "ImplementedConstructor#ImplementedConstructor()" );
    }

    /**
    *   引数付きコンストラクタ。
    */
    public ImplementedConstructor( int i )
    {
        System.out.println( "ImplementedConstructor#ImplementedConstructor( int ): " + i );
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/03/23
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。