はじめに
今回は、Javaの「クラス」「クラス変数」「クラスメソッド」「インスタンス」について、勉強したことを記載していきたいと思います。
クラスとは
クラスとは、情報の集合をデータ型として表すことができるものです。クラスは主に「属性」と「操作」によって構成し、データと処理を一纏まりにすることができます。
属性
|
クラスが持つ変数のこと。(クラスが持つデータのこと) |
操作
|
クラスが持つメソッドのこと。(クラスが持つ処理や操作のこと)
クラスメソッド、メンバメソッドとも呼ばれる。 |
定義
修飾子 class クラス名 {
// メンバ変数やメソッドを定義
}
例
public class User {
}
メンバ変数
メンバ変数とは上述でも書きましたが、クラス内で使用する変数のことです。メンバ変数には、インスタンス変数とstatic変数の2つの種類が存在します。
static変数
|
クラスごとに使用する変数
|
インスタンス変数
|
インスタンス化したオブジェクトごとに使用する変数
|
定義
修飾子 class クラス名 {
// 変数定義
修飾子 データ型 変数名
}
例
public class User {
/**
* クラス共通コード
*/
public static char CommonCode = 'X';
/**
* ユーザID
*/
private int UserId;
/**
* ユーザ名
*/
private String UserName;
}
メソッド
メソッドは、データに対する操作や処理を記述します。メソッドを呼び出すことで記述した処理を実行することができます。メソッドにも、「インスタンスメソッド」と「staticメソッド」が存在します。
定義
修飾子 class クラス名 {
// 変数定義
修飾子 データ型 変数名
// メソッド定義
修飾子 戻り値の型 メソッド名 (引数) {
//処理記述
return 戻り値の型に該当するデータ
}
}
例
public class User {
/**
* クラス共通コード
*/
public static char CommonCode = 'X';
/**
* ユーザID
*/
private int UserId;
/**
* ユーザ名
*/
private String UserName;
/**
* ユーザID設定
* @param userID
*/
public void setUserId(int userID) {
this.UserId = userID;
}
/**
* ユーザ名設定
* @param userName
*/
public void setUserName(String userName) {
UserName = userName;
}
/**
* ユーザID取得
* @return
*/
public int GetUserId() {
return UserId;
}
/**
* ユーザ名取得
* @return
*/
public String GetUserName() {
return UserName;
}
}
インスタンス化
定義したクラスを実際に使用するために、オブジェクトそして実体を持たせることを「インスタンス化」と呼びます。オブジェクト毎に作成される「インスタンス変数」「インスタンスメソッド」はインスタンス化することで使用できるようになります。
定義
データ型 変数名 = new クラス名();
変数名.メソッド名(); // 呼び出し
例
public static void main(String[] args) throws Exception {
User user = new User();
user.setUserId(1);
user.setUserName("mori");
System.out.println(user.GetUserId());
System.out.println(user.GetUserName());
}
コンストラクタ
コンストラクタとは、クラスに変数・メソッド以外にクラスに定義できるもので、クラスをインスタンス化する際に最初に呼び出される初期化の役割を持たせることができます。
定義しなくても「デフォルトコンストラクタ」が用意されているためインスタンス化時に自動で呼んでくれますが、明示的に定義した場合、併せて自身でデフォルトコンストラクタを用意してあげる必要があるため注意が必要です。
種類 | 特徴 |
コンストラクタ | ・コンストラクタ名が名前と同じ ・引数がある ・{}内に処理が記述されている ・戻り値を持たない |
デフォルトコンストラクタ |
・コンストラクタ名が名前と同じ |
定義
修飾子 class クラス名 {
// コンストラクタ
クラス名と同じコンストラクタ名() {
}
}
例
public class User {
/**
* デフォルトコンストラクタ
*/
User () {
}
/**
* コンストラクタ
* @param id
* @param name
*/
User (int id, String name) {
this.UserId = id;
this.UserName = name;
}
/**
* クラス共通コード
*/
public static char CommonCode = 'X';
/**
* ユーザID
*/
private int UserId;
/**
* ユーザ名
*/
private String UserName;
/**
* ユーザID設定
* @param userID
*/
public void setUserId(int userID) {
this.UserId = userID;
}
/**
* ユーザ名設定
* @param userName
*/
public void setUserName(String userName) {
UserName = userName;
}
/**
* ユーザID取得
* @return
*/
public int GetUserId() {
return UserId;
}
/**
* ユーザ名取得
* @return
*/
public String GetUserName() {
return UserName;
}
}
修飾子とは
修飾子はアクセス修飾子とも呼ばれ、定義したクラスの公開する範囲を指定することができます。
「private」と「protected」はクラス定義には使用できないため、注意が必要です。
種類 | 使用できる範囲 |
public | どのクラスからでも使用可能となる |
protected | 同一パッケージ内のクラスや継承されたサブクラスからのみ使用可能となる |
指定なし | 同一パッケージ内のクラスからのみ使用が可能となる |
private | 同一のクラス内からのみ使用が可能となる |
ドキュメント
【公式ドキュメント】
Java SE Specifications (oracle.com)
最後に
Javaの環境構築は、この記事を参照してみてください。
【開発環境構築】VS CodeでJavaを使用するための環境構築を実施する – SEもりのLog (selifemorizo.com)
以上、ログになります。
これからも継続していきましょう!!
コメント