図Pron1_1_㏛cは「初めてのオブジェクト作成(Constructorを書かない)」を説明するためのプログラム例である。このプログラムの最後にコメントで実行結果が示されている。クラスはオブジェクト作成のテンプレートのようなものである。オブジェクトを作成するには先ずそのテンプレートであるクラスが必要である。クラスは例えば以下のような形をしている。
class クラス名{
フィールドの宣言; ・・・・;フィールドの宣言;
メソッドの宣言;・・・;メソッドの宣言;
}
フィールドの宣言とはint, double, 配列変数、オブジェクト変数などである。
メソッドの宣言とはメソッドの定義である。オブジェクト属するメソッドとする場合はstaticを付けない。
図Pron1_1_srcの場合、BookとPron1_1がクラスである。Bookは二つのフィールドtitleとpage_suuを持っている、またメソッドdisplayを持っている。String title;によりtitle はStringタイプの参照変数となり int page_suu;によりpage_suuはint変数となる。従って、Bookはそれらのフィールドとメソッドを持つクラスである。クラスはオブジェクトを作るテンプレートである。
12行 変数aをBook型の参照変数として宣言している。
13行 new Book()によりBook型の新しいオブジェクトを作っている。このオブジェクトはBookクラスで定義している内容を持っている。それなりのメモリーが必要で、Javaのシステム内のどこかにとられ、その参照がaにセットされる。つまり、aはtitle, page_suu, dispayを持っているオブジェクトともいえる。
14行 Stringの参照変数titleに文字列”Introduction to Java”がセットされる。
15行 aのpage_suuに500がセットされる。
16行 aはBook型のオブジェクトであるのでその中にはdisplayメソッドがあり、a.dispay();のように使用できる。displayはtitle, page_suuを表示している。
17行 aと同じようにbが宣言されている。
18行 bにオブジェクトがセットされる。
19行 b.titleに文字列がセットされる。
20行 b.page_suuに300がセットされる。
21行 bの内容が表示れる。
24行 cのフィールドは明示的には初期化されていないので、defaultの値で初期化される。
コンストラクターについて:
Book()はコンストラクターと言われ、newを付けて呼ばれる特殊なメソッドである。このプログラムにはコンストラクターが明示的には何も定義されていない。その場合は引数のないコンストラクターが定義される。コンストラクターの名前はクラス名と同じである。引数のないコンストラクターを呼ぶとフィールは決まった値で初期化され、オブジェクトができる。数値の場合
はゼロ、booleanはfalseなどである。
30行 titleはnull(ナル)で、page_suuは0で初期化されている。nullとはこの場合、参照変数titleがどこも参照していない状態である。
GO TO Java: Understanding Classes
以下にソースを張り付けます。よかったら使ってください。
/* 最初のオブジェクトの作成(Constructorを書かない)*/ class Book { String title; int page_suu; void display(){ System.out.println("title="+title+ ", page_suu="+page_suu); } } class Pron1_1{ public static void main(String[] args){ Book a; a=new Book(); a.title="Introduction to Java"; a.page_suu=500; a.display(); Book b; b=new Book(); b.title="Introduction to C"; b.page_suu=300; b.display(); Book c; c=new Book(); c.display(); } } /* title=Introduction to Java, page_suu=500 title=Introduction to C, page_suu=300 title=null, page_suu=0 */