こんにちは。スピカです。
またまたJava bronzeの6章、クラス定義とオブジェクトの生成・使用から。
インスタンスとかコンストラクタとかなんじゃらほいと思ったので、自分がわからないと思った部分をまとめました。
インスタンス化とは?
Javaではクラスやそこに付随するメソッドにはmainメソッドのように処理文を無理に実装する必要はありません。
例えば変数の宣言だけ行ったり、とある機能だけ実装しておいてmainメソッドで呼び出して使う。なんてことができるんですね。
なんでそんな事するかというと、オブジェクト指向から来る実装になります。
mainメソッドに機能全部記載すればいいじゃないか!と思う方がいらっしゃるかもしれませんがデメリットがありますよね。
- コードが多すぎて見づらい。
- 変更・修正したい処理を探すのが大変。
- 間違えていじっちゃうかも。
などなど。
そうならないように話す、歩く、書く、表示する、足す、引く。など機能ごとにページを分けて作れば表示する機能だけ修正したい場合はそのページを修正するだけでいいですし見やすく探しやすいですよね。
このように機能ごとなどに分けて処理を実装するのがJavaの基本的な考えになります。
その機能を持ったページ(クラス・メソッド)を使うためにmainメソッドなどで呼び出して使うんですね。
その呼び出すときに使うのがインスタンス化というものになります。具体的な流れとしては
- 「表示する」機能を持ったAクラス・Bメソッドを作成
- 実行するメソッド(mainメソッド)でAクラスを呼び出すためにインスタンス化(オブジェクト生成)
- そのオブジェクトを使い、AクラスのBメソッドを呼び出し
- 実行
というような流れですね。インスタンス化で作ったオブジェクトはmainメソッドで任意の変数に代入し使います。
ようは、別のクラスを使うためにモノを作ってそこにクラスを呼び出してそのクラスをオブジェクトに入れる事をインスタンス化と言うみたいです。
構文
データ型 変数名 = new クラス名();
これがインスタンス化です。クラス名と書いてますが実際に呼び出しているものはクラスではなく、コンストラクタというものです。コンストラクタについては別の記事で書いてますのでこちらも読んでみてください。クラス名とコンストラクタ名は同じにしなければいけないので頭がこんがらがりますが、実際に呼び出しているのはコンストラクタになります。
そのコンストラクタの情報を変数に代入しているのが上の式になります。
また呼び出したコンストラクタの中のメソッドを呼び出すのには別の構文が必要になります。
変数名.メソッド名();
この式で、呼び出したクラス(コンストラクタ)内のメソッドを呼び出すことができます。
要は2つの式はセットで使うようなモノです。メソッド名()の()の中には引数を設定できます。
メソッドの引数に値を渡すことができるというわけですね。
コメント