Java基礎ークラスとインスタンス・アクセス修飾子

今日からしばらくは、昨年度に新人さん相手にJava勉強会をやった際に作成したメモを清書していこうと思います。

今日はJavaのクラスについてまとめます。

1. クラスとインスタンス

クラス・・・設計図のようなもの
インスタンス・・・設計図をもとに作成した実体

// 動物の設計書(クラス)
public class Animal {

    /** 名前 */
    public String name;

    /** 体長 */
    public int height;

    /** 
    * コンストラクタ<br>
    *
    * @param name 名前
    * @param height 体長
    */
    public Animal(String name, int height) {
        this.name = name;
        this.height = height;
    }
}

public class Main {

    public static void main(String[] args) {
        // ねこ(インスタンス)の作成
        Animal cat = new Animal("ねこ", 90);
    }
}

2. クラス

2.1 クラスに関する色々なものについて

番号 名称 説明
1 定数 最初に代入した値を後から変更できない変数のこと。
キーワードfinalをつける。
2 ローカル変数 メソッド内やコンストラクタ内で宣言した変数のこと。宣言したメソッド・コンストラクタ内でのみ使用可能。
3 メンバ変数 クラスに宣言した変数のこと。クラス内のメソッド・コンストラクタから自由に使用できる。インスタンスごとに異なる変数となる。
4 static変数 インスタンスを生成せずに使える変数のこと。クラス内の変数なので、そのクラスから作られたインスタンス全てで共有される。
5 staticメソッド インスタンスを生成せずに使えるメソッドのこと。
6 コンストラク インスタンスを生成する(newする)際に自動で呼ばれるメソッド。コンストラクタ名はクラス名と同じにする。
public class Sample {

    /** 定数 */
    public static final int NUMBER_OF_MONTHS = 12;

    /** メンバ変数 */
    public String name;

    /** static変数 */
    public static String hoge;

    /** コンストラクタ */
    public Sample(){
    }

    /** (インスタンス)メソッド */
    public void doSomething(String str) { 
        // ローカル変数
        String keishou = "さん";
        name = str + keishou;
    }

    /** staticメソッド */
    public static void doStatic(){
        System.out.println(hoge);
    }
}

public class Main {

    public static void main(String[] args) {
        // コンストラクタでインスタンスを作成する
        Sample sample = new Sample();

        // インスタンスメソッドはインスタンスから実行する
        sample.doSomething("はなこ");

        // メンバ変数はインスタンスから参照できる
        sample.name;

        // staticメソッドはクラスから実行する
        Sample.doStatic();

        // static変数はクラスから参照できる
        Sample.hoge;
    }
}

2.2 アクセス修飾子

番号 名称 説明
1 public すべてのクラスからアクセスできる
2 protected 同じパッケージ内のクラスやそのクラスを継承したサブクラス内部(違うパッケージでも可)からアクセスできる
3 パッケージプライベート 同じパッケージ内のすべてのクラスからアクセスできる
4 private クラス内部からのみアクセスできる