クラスについてまとめる

  • Javaはクラスという規則の集合によってできている。
  • クラスは大きく2つに分けられる
    • データ格納規則(規則に則ってデータを格納すると、そのデータセットはオブジェクトと呼ばれ、それには名前がある)
    • データを利用し演算する規則(メソッドと呼ばれる)
  • Javaにおけるクラスの位置づけ
    • Javaにおいてデータを扱うということは、次のようなことである
      • 扱うとは
        • データをメモリ上に蓄える
        • データを利用して新たなデータを算出する
      • データの蓄え方
        • 既定のデータ型にて蓄える
        • 既定データ型の組み合わせセットにて蓄える
          • 既定データ型の組み合わせの規則を、クラスと呼ぶ
            • クラスの規則に則ったデータのセットをオブジェクトと呼ぶ
            • クラスには2通りある
      • データを利用して新たなデータを算出する方法
        • データを利用するためには、オブジェクトとして蓄えられている必要がある
        • オブジェクトとして蓄えられたデータを利用する方法はメソッドと呼ばれる
          • メソッドもまた、クラスであり
          • オブジェクトの持つデータを取り扱う規則のことである
          • メソッドは、オブジェクトに蓄えられたデータを扱うものであるから、そのオブジェクトを定義しているクラスに付属する
  • オブジェクト
    • オブジェクトはクラスに定義されたデータを持つ
    • クラスは、データ型もしくはクラスによって、データを蓄える
      • 蓄えるデータはフィールドとして宣言される
    • オブジェクトはクラスによって定義されたデータを蓄えることができるが、クラスによって定義されたすべてのフィールドについてデータを持つ必要はない
    • オブジェクトを作成し、データを蓄えるにあたっては、インスタンスを作成する作業が必要である
    • また、インスタンスの作成にあたっては、クラスによって定義されたフィールドのうちのどのフィールドにデータを格納するべきかを指定する必要がある
    • データ格納フィールドの指定方法も定義する必要があり、それをコンストラクタと呼ぶ
      • ただし、クラスが定義したすべてのフィールドにデータを格納する場合には、コンストラクタを明示する必要がない

//Javaのクラスを作成するときのテンプレート
//クラスは
//フィールドの定義と
//オブジェクトを作る方法=コンストラクタと
//クラスに格納した情報をハンドリングするためのメソッドと
//の3つからできている

class Hogeclass{

//フィールドの定義
int hOgefield1; データ型"String"でフィールドを宣言
String hOgefiedl2; SDK配布クラス"String"でフィールド宣言
Mogeclass hOgefield3; 自作クラス"Mogeclass"でフィールドを宣言

//コンストラクタの定義
//コンストラクタは複数作れる
//コンストラクタは必ずクラスの名前"Hogeclass"と一致する
//次のコンストラクタはhOgefield1だけをもつオブジェクトを作成するためのコンストラクタである



Hogeclass(int number){
hOgefield1 = number;
}
//次のコンストラクタはhOgefield1とhOgefield3をもつオブジェクトを作成するためのコンストラクタである


Hogeclass(int numb, Mogeclass moge){
hOgefield1 = numb;
hOgefield3 = moge;
}
//すべてのフィールドを持つオブジェクトを作成するためのコンストラクタはここに書かなくても"Hogeclass()"としてがデフォルトで出来上がる

//メソッドの定義
//返り値を持つメソッドと返り値を持たないメソッド
//返り値を持つ場合



public String GetField2(){
return hOgefield2;
}
//返り値を持たない場合


public void SetField3(Mogeclass moge){
hOgefield3 = moge;
}


}

//しかしながら、これだけだと、クラスは出来上がるが、そのクラスを活用できないので、このクラスのオブジェクトを作成しそのオブジェクトに持たせた情報をメソッドによって利用するための、別のクラスがないと無意味である

class UseHogeclass{



public static void main(String[] args){
Hogeclass hogeObject1 = new Hogeclass(int number); hOgefield1のみに値を持たせるためのコンストラクタを使用して、HogeclassクラスのインスタンスhogeObject1を作成した
hogeObject1.hOgefield1 = 3; hogeObjectオブジェクトのhOgefield1フィールドに値 "3"を代入した

Hogeclass hogeObject2 = new Hogeclass(); すべてのフィールドに値を持たせるためにデフォルトコンストラクタを使用して、インスタンスhogeObject2を作成した
hogeObject2.hOgefield1 = 2;
hogeObject2.hOgefield2 = "pachipachi";
//メソッドを用いて、hOgefield3に"mogemoge"を入れる
hogeObject2.SetField3(mogemoge);

}