Javaのデフォルトコンストラクタとは?意味と仕組みをわかりやすく解説
コンストラクタとは
コンストラクタ(constructor)はメソッドに似た仕組みで、クラスのオブジェクト(インスタンス)を生成するタイミングで自動的に呼び出されます。主に、クラスのインスタンス変数を初期化するために使用されます。コンストラクタには以下のような特徴があります。
- クラス名と同じ名前を持つ
- 戻り値の型を持たない(voidも指定しない)
デフォルトコンストラクタとは
Javaにおけるデフォルトコンストラクタとは、引数なしで自動的に提供されるコンストラクタのことです。プログラマが明示的にコンストラクタを1つも定義していない場合、Javaコンパイラが自動的にこのデフォルトコンストラクタをクラスに追加します。
デフォルトコンストラクタは、クラスのデータメンバ(フィールド)を各型のデフォルト値で初期化します。例えば、int型なら「0」、double型なら「0.0」、boolean型なら「false」、参照型なら「null」です。
デフォルトコンストラクタの動作確認
次の例では、コンストラクタを一切定義していません。
public class Sample {
int num;
public static void main(String args[]){
System.out.println(new Sample().num);
}
}このプログラムをコンパイルして実行すると、デフォルトコンストラクタによってint型変数numが「0」で初期化されるため、実行結果は「0」と表示されます。
javapコマンドで確認する
javapコマンドを使用すると、クラスが持つフィールド・コンストラクタ・メソッドの情報を表示できます。上記のクラスをコンパイルした後にjavapコマンドを実行すると、コンパイラが自動的に追加したデフォルトコンストラクタを確認できます。
D:\>javap Sample
Compiled from "Sample.java"
public class Sample {
int num;
public Sample();
public static void main(java.lang.String[]);
}
「public Sample();」という行が、コンパイラによって自動生成されたデフォルトコンストラクタです。
明示的なコンストラクタを定義した場合
なお、ユーザーが何らかのコンストラクタを定義した場合は、コンパイラによるデフォルトコンストラクタの自動生成は行われません。以下の例では、引数なしのコンストラクタと、引数ありのコンストラクタ(オーバーロード)を明示的に定義しています。
public class Sample{
int num;
Sample(){
num = 100;
}
Sample(int num){
this.num = num;
}
public static void main(String args[]){
System.out.println(new Sample().num);
System.out.println(new Sample(1000).num);
}
}実行結果:
100
1000
まとめ
- コンストラクタはオブジェクト生成時に呼び出され、インスタンス変数の初期化に使われる
- コンストラクタを1つも定義しない場合、コンパイラが自動的にデフォルトコンストラクタを追加する
- デフォルトコンストラクタはフィールドをデフォルト値(int型なら0など)で初期化する
- 明示的にコンストラクタを定義すると、デフォルトコンストラクタは生成されなくなるため注意が必要
-
JavaにおけるCursorクラスの役割とは?マウスカーソル制御の基本を解説
JavaのCursorクラスとはCursorクラスは、Objectクラスのサブクラスであり、画面上のポイント(指し示す位置)やインジケーター(表示標識)として定義されます。ユーザーがマウスを使ってシステムへの入力を選択・操作する際に、その位置を視覚的に示す重要な役割を担っています。GUIアプリケーションでは、状況に応じてカーソルの形状を変えることで、ユーザーに対して直感的なフィードバックを提供できます。例えば、処理中であることを伝える砂時計型のカーソルや、クリック可能な要素を示す手型のカーソルなどが代表的な例です。利用可能なカーソルの種類Cursorクラスには、あらかじめ定義されたさまざまなカ
-
JavaのJSeparatorクラスとは?重要性と基本的な使い方を解説
JSeparatorクラスとはJSeparatorは、Swingで提供されるコンポーネント同士を視覚的に区切るためのクラスです。水平または垂直の区切り線、あるいは余白(空白スペース)として表示され、GUIの見やすさと整理されたレイアウトを実現します。JSeparatorクラスの主な役割は、レイアウト内のコンポーネント間に区切り線を描画して分離することです。これにより、関連する項目をグループ化し、ユーザーインターフェース全体の可読性を高めることができます。メニューやツールバーへの区切り線の追加メニューやツールバーにセパレータを追加する最も簡単な方法は、JMenu、JPopupMenu、JTool