JAVAで必須! クラスとオブジェクト
JAVAでよく問われ、いろいろなサイトで扱われている「クラス」と 「オブジェクト」についてまとめていきたいと思います。
技術的な話については後ほどで、おおよその役割についてまとめておきます。あまり、技術的に書いても見返したとき分からなくなってしまいそうなので><
・「クラス」
「設計図のようなもの」と説明されることが多いですが、自分なりの解釈で進めます。
クラスとは「生き物や物の情報を分かりやすくひとまとめにするもの」だと思います。
???ってなると思うので、「犬」を例にとって考えてみます。
変数の宣言はひとつの情報しか入りません。
double weight; と書けば、体重や重さの情報が入ります。(もちろん、格納されるのは倍精度浮動小数点型の数値ですが)
でも、犬は体重だけでなく、身長などの区別、散歩もします。
→犬には体重(変数)、身長、歩く動作(メソッド)の情報をまとめたものである。
と言えます。(もっと加えていくとさらに正確になっていきます)
実際に書いていくと
class Dog{
double height; //身長
double weight; //体重
double tiredpoint; //疲れ度
void walk(){ //散歩メソッド
tiredpoint += 0.1; //疲れた~~
}
}
となります。
このように、変数とメソッドを集めて「犬とはこういうものだ」と定義しています。
・「オブジェクト」
オブジェクトは「定義(クラス)から実際に作り出されたもの」です。
「クラスからオブジェクトを作る」とも言われますね!
先ほどのDogクラスはあくまで定義であって、まだ犬がその場にいません。
そこで、実際の犬(オブジェクト)を作り出します。
プログラムで書くと、
Dog poti; //Dogクラスのオブジェクトを参照する変数を宣言ポチを作る
poti = new Dog(); //ポチは犬だよ!と宣言。
//potiがDogクラスのオブジェクトを参照する
次に、ポチの説明を加えていきます。
poti.weight = 8.0; //ポチの体重
poti.walk(); //散歩するポチ
と使っていきます。
(補足)
クラスとC言語の構造体って似ているなと思い調べてみましたが、プログラミング言語によって仕様が異なるということなので、またの機会でまとめようと思います。