【Java】クラス・クラス変数・クラスメソッド・インスタンスについて

Java

はじめに

今回は、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)

以上、ログになります。
これからも継続していきましょう!!

Javaサーバーサイド関連
おすすめIT本
良いコード/悪いコードで学ぶ設計入門

「ITエンジニア本大賞2023」技術書部門で大賞を受賞した本です。
・コードの可読性
・普段意識したほうが良いこと
・リファクタリング考え方
等、普段のコードを設計する際に意識することが書かれています。
コードのあるべき姿に迷ったら一度読んでみると良い本です。

仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん

Dockerって何?となったときに私が最初に読んだ本です。
Dockerがどんな仕組みで動いているのか、コマンドでは何を命令しているのかを理解できるように、イラストを多用して説明しています。

1冊ですべて身につくJavaScript入門講座

「ITエンジニア本大賞2024」技術書部門で大賞を受賞した本です。
私が次に読もうと思っている本なのでおすすめとして挙げておきたいと思います。

コメント

タイトルとURLをコピーしました