インスタンス
- クラスブロック内に宣言された変数をjavaでは特にフィールドという
- フィールド宣言の先頭にfinalを付けると、値を書き換えられない定数フィールドとなる(こういう時は一目でそれとわかるように大文字での記述が推奨される)
- newはインスタンス生成で使用。逆の言い方をすればインスタンスの生成にはnewを使う
- すでに作成したクラスをクラス型としてデータ型に利用でき、インスタンスはクラス型変数に入れて利用する
- thisは「自分のインスタンス」を表すキーワード
ここでクラス型について出てきたので復習
| 大分類 | 中分類 | 具体的な型・例 |
|---|---|---|
|
基本データ型 (値を直接持つ) |
整数 浮動小数点数 文字 論理 |
byte, short, int, longfloat, doublecharboolean
|
|
参照型 (参照先のアドレスを持つ) |
文字列 配列 その他 |
Stringint[], String[]クラス, インターフェース |
注:Stringは参照型ではあるがimportしなくても使用できるのはjava.langにあるから。またnewは不要(必須ではない)逆に言えば書いてもOK。
以上よりクラス型のデータ型は当然参照型となり、インスタンス内の変数の内容は参照型で考える必要がある。
クラスとメンバの命名ルール
注:メンバとはそのクラスのフィールドとメソッドを指す
| 対象 | 品詞 | 大文字/小文字の用法 | 例 |
|---|---|---|---|
| クラス名 | 名詞 | 単語の頭が大文字 | Hero, MonsterInfo |
| フィールド名 | 名詞 | 最初以外の単語の頭が大文字 | level, itemList |
| メソッド名 | 動詞 | 最初以外の単語の頭が大文字 | attack, findWeakPoint |
コンストラクタ
定義
オブジェクトの初期化を行う。コンストラクト(構築するという意味)からきている。
使い方
コンストラクタのメソッドを記述するときは以下の例のように戻り値のデータ型は記述せず、メソッド名もクラス名と同じにする。
public class Main {
public Main() {
// ここにコンストラクタの処理内容を記述
}
}
コンストラクタも引数の数や型でオーバーロードにより複数用意できる。
引数なしのコンストラクタを特にデフォルトコンストラクタという。
コンパイル時にコンストラクタが1つも無い場合は中身がないデフォルトコンストラクタがクラスファイルに自動生成されるが、引数ありのコンストラクタがあれば生成されない。
コンストラクタのコード内で
this.クラス名(引数);
//コンパイル時にエラー
のように意図的にオーバーロードしているほかのコンストラクタを呼び出そうとするとコンパイルエラーになる。これはコンストラクタを呼び出せるのはJVMのみであるため、構文を以下のように替えてJVMに依頼するようなコードにすると起動ができる。ただこれは同じクラスのコンストラクタが対象となる方法である。
this(引数);
ほか、private修飾子、データ隠蔽またはカプセル化などの言葉だけ紹介し、さらっと進んでしまったため、今回はここまで。