第2章 クラスの基本
2.1 クラスの定義方法について
前章ではオブジェクト指向プログラミング、クラスとオブジェクトの概念、および関係について学習しました。オブジェクト指向プログラミングを実現する上で重要な「クラスはオブジェクトを生成する雛形」であるという関係性について理解されたと思います。本項ではクラスとオブジェクトの概念だけでなく、実際にJavaプログラム上では、どのように記述すれば良いか学習していきましょう。
2.1.1 クラス定義の基本構文
前章でクラスは属性(フィールド変数)と操作(メソッド)を持つものと学習しましたが、全てのクラスがそうなるものではありません。変数だけのクラスやメソッドだけのクラスも定義することができます。以下にクラス定義パターンを示します。
- 変数とメソッドの両方を含む
- 変数のみ
- メソッドのみ
上記①~③の定義パターンを踏まえて、実際のクラスを定義する基本構文を説明します。
書式: クラス定義
public class クラス名 { 属性(フィールド変数)の宣言 … 操作(メソッド)の定義 … }
これまで作成してきたクラスと違う点があります。それは属性(フィールド変数)がある点です。操作(メソッド)の定義は「mainメソッド」や「自作のメソッド」で経験済みだと思います。クラスには、さらに属性(フィールド変数)を設定することができたのです。
これまで学習してきた内容では、変数の宣言はメソッドのブロック内部で行っていました。このような、メソッド内部で宣言された変数のことをローカル変数と呼びます。
これに対して、フィールド変数の宣言は、メソッドブロックの内部ではなくクラスブロックで行っている点です。フィールド変数とローカル変数では、動作が異なりますので注意して下さい。
- フィールド変数:クラスブロック内の全処理(全メソッド)内で使用可能
- ローカル変数:宣言したブロック内(各メソッド毎)のみ使用可能
書式と説明だけでは理解し難いと思いますので、実際にコンピュータを例にとってソースコードの凡例を見てみましょう
凡例:クラス定義
Computerクラスのブロック内には変数の宣言とメソッドの定義を記述しています。クラスブロック内で宣言している、属性を表す変数(os、cpu、memory)のことをフィールド変数、あるいはメンバ変数と呼び、属性を宣言している部分のことをフィールドと呼びます。また、クラスブロック内に定義されたフィールド変数とメソッドを合わせてメンバと呼びます。
では次の節で実際に宣言したクラスを利用する方法について説明していきます。