クラス機構
メモリ
コンピュータが持っている保存領域
メモリの動き
領域として空いているところに自動的にインスタンスが保存される
作った変数にはインスタンスが入っているわけではなく、保存場所
が入っている
クラス型をフィールドに
クラス定義した時にできる型も同じようにフィールドとして
扱うことができる
クラス型で引数や戻り値
クラス型は引数にも戻り値にも使用することができる
String型の真実
1 所属しているのがjava.langパッケージ
2 ””で文字列を囲むだけでインスタンス生成
(String型だけの特例)
((ex)”こんにちは”でインスタンス生成)
String str = new String("こんにちは");
と書いてもインスタンス生成が可能だけど・・・
実引数を渡している
✡実引数に追加じょうを渡してnewできる仕組み
生まれたてのインスタンスとは
インスタンスを生成した直後は中に何も入っていない
この状態をプログラム上でnullという
コンストラクタ(フィールドの初期値を設定する)
newというキーワードの後に自動実行されるもの
(ex)
Kanagata( ){
this.nakami = "あんこ";
}
コンストラクタ作成ルール
1 クラス名とコンストラクタ名にする
2 メソッドに似ているので引数が使える
3 メソッドと異なるのは戻り値が使えない
(ex)
Taneクラスに引数をつけたコンストラクタ作成
Tane(String name){
this.name = name;
}
複数コンストラクタ
1つのクラスに複数書くことができる
引数を変更し、用途により使い分ける
暗黙のコンストラクタ
インスタンス生成する場合、クラスは最低でも1つ以上のコンストラクタ定義を持っている。必要があるクラスに1つもコンストラクタが定義されていない場合、デフォルトコンストラクタがコンパイル時、自動的に追加される
※自分で作成する場合は引数を合わせること
※ローカル変数は優先度が高いので注意!
(this.をつけてフィールドを見るようにする!!)
静的メンバ(クラスフィールド・クラスメソッド)
静的・・・統一されていること
メンバ・・・フィールド+メソッド
各インスタンス同士で共有したい情報
1つの情報を共有できればムダなメモリを消費しなくなる
staticを付けると静的メンバにできる
→クラス側に存在し、インスタンス生成時にフィールドとして作成されない
インスタンス生成しても情報を使いたい時は
クラス名.フィールド名(メソッド名)
とすれば参照できる
(ex)Kanagata.SIZE