Java初心者が最初に悩みがちな概念として、「クラス」の存在が挙げられます。
本記事では、クラスに関する基本情報はもちろん、クラス名の付け方から定義方法まで初心者向けに徹底解説していきます。
目次
Javaのクラスとは?
Javaの学習を始めたばかりの方が躓きやすいポイントとして、必ず挙げられるのが「クラス」の概念です。
クラスは、システムを構築する機能を特定のグループとして集めたものを指しています。
クラスの考え方
クラスの例えとしてよく挙げられるのが「設計図」です。
クラスはあくまで設計図でしかなく、実際に利用するためには「インスタンス」と呼ばれる実体が必要になります。
例えば車の場合、車の設計図だけでは運転することは出来ませんが、設計図から車の実体を作成することで利用することが可能になるのと同じように、クラスもインスタンスを生成して利用します。
クラスには何が記述されている?
クラスには大きく「プロパティ」と「メソッド」の2つが記述されています。
プロパティは、クラスに必要なデータの値を保持しておくための箱で、メソッドはクラスで行いたい処理内容を記述する場所です。
プロパティとメソッドは複数保持することが可能で、関連する機能(プロパティとメソッド)をまとめてクラスと呼びます。
Javaのクラス名ルール
Javaでクラス名を付ける際、絶対に守らなければいけないルールと習慣として守るべきルールがあります。
守らなければいけないルール
まず守らなければいけないルールとして下記の一覧が挙げられます。
- 制限1: 記号はアンダースコアとドルマークのみ使用可能
- 制限2: 最初の文字は数字以外
- 制限3: 予約語以外
制限1
クラス名で利用できるのは「_(アンダースコア)」「$(ドルマーク)」のみが使用可能です。
「CLA#S」や「CLA%S」などは、Javaでクラス名として定義することが出来ません。
またドルマークに関しても非推奨となっていることから、基本的にはアンダースコア以外の記号は避けて命名しましょう。
制限2
Javaではクラス名の頭文字が数字で始まることを許可していません。
数字自体はクラス名として利用可能ですが、頭文字以外で利用する必要があります。
制限3
Javaでは予め予約語と呼ばれる、キーワードがいくつか決められています。
制限1,2を守っていたとしても、予約語をクラス名として設定することは出来ませんので、注意が必要です。
- abstract
- boolean
- break
- byte
- case
- catch
- char
- class
- const
- continue
上記以外にもJavaで指定された予約語はクラス名には使用できません。
守るべきルール
上記は守らないとクラスを作成することが出来ないルールですが、守るべきルールとして「クラス名の頭文字を大文字」にするというのも習慣的なルールとして利用されています。
Javaのクラス名には大文字・小文字どちらも使用可能で、小文字から始めることも可能ですが、一般的には大文字から始めることが推奨されています。
Javaでのクラス定義
Javaでのクラス定義の方法についても簡単にご紹介していきます。
クラス定義の基本
基本となるクラス定義は下記の記述となります。
アクセス修飾子 class クラス名 { // クラス定義 }
publicクラスとして、Subクラスを定義する場合には、下記のコードとなります。
public class Sub { // クラス定義 }
属性(プロパティ)
クラスには属性(プロパティ)を保持することが可能です。
アクセス修飾子 [static] データ型 変数名
staticは任意で設定することができ、staticを付与した場合にはクラス変数、staticを付与しない場合はインスタンス変数として扱われます。
public class Sub { public String str; public int num; }
クラス変数はクラス共有の変数として扱い、インスタンス変数はインスタンス毎に値を保持するため挙動が異なります。
操作(メソッド)
クラスにはプロパティ以外にも操作(メソッド)を定義することが出来ます。
アクセス修飾子 [static] 返り値の型 メソッド名() { }
先程のクラス定義にメソッドを追加すると下記のようになります。
public class Sub { public String str; public int num; public String method1() { return str; } public static void method2() { // 処理内容を記述 } }
method1では返り値の型としてString型を指定しているため、処理内容に「return」文を記述してString型の値を必ず返却する必要があります。
一方method2のように返却する値がない場合には、返り値の型を設定する箇所に「void」を記述します。
Javaサンプルコードでクラス処理を理解しよう
ここまでで、クラスに関する基本情報を紹介出来ましたので、実際にプログラムとしてどのように利用するのか確認してみましょう。
サンプルコード
public class Main { public static void main(String[] args) { User user = new User(); user.setName("田中一郎"); System.out.println(user.getName()); } } class User { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
実行結果が下記です。
田中一郎
サンプルコード解説
Javaではデフォルトで「public static void main(String[] args)」が呼び出されるように設定されているので、4行目から処理が始まります。
4行目に記述しているのが、設計図であるクラスを実体として利用するために用いるインスタンス化の処理です。
5行目では、Userクラスのnameプロパティに値を設定するためのメソッド「setName」に引数の値を設定しています。
6行目に記述した「System.out.println」は引数に指定した値をコンソールに出力するための機能で、14行目に定義したメソッドgetNameを呼び出すことで、先程設定したUserクラスのnameプロパティの値を出力するように設定しています。
さいごに: クラス名は分かりやすく設定し可読性の高いJavaプログラムを作成しよう
本記事では、Javaのクラスに関する情報やクラスの命名ルールについて、Java学習初心者の方向けにご紹介してきました。
クラスの命名ルールについては、解説本や解説サイトでも説明されていないことが多く、意外と知らない人も多いものです。
最近はIDEで命名規則の禁止ルールについては避けることが出来るようになっており、プログラマとしてはどれだけ可読性の高いクラス名を付けることが出来るかを意識することが大切です。
基本的にクラス名とファイル名は一致させるのが慣例です。
Subクラスの場合には、Sub.javaとファイル名を設定します。