5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Java - クラス・インスタンス生成 Part.1

Last updated at Posted at 2018-11-12

記事の書かれ方について

授業スライドとかを参考にしてるわけじゃないので、別の切り口から説明されてると思うけど。
たぶん言ってることはあっている(はず)。

アドリブなのでミスがあるかもしれないのであったら教えて!

4部構成です

Part.1 さっくりインスタンス生成をしてみる ←イマココ
Part.2 コンストラクタを使ってもっとすっきり
Part.3 アクセス制御をして、入ってくる値を制限しよう
Part.4 クラス変数・メソッドを使ってみる

クラスって何じゃろな?

クラスは、フィールドやメソッドをひとまとめにしたもので、よく設計図のようなものって言われたりする。

クラスに書いたフィールド変数とか、メソッドを使うときはインスタンスというものを生成して使うことが多い。
クラスという設計図をもとにインスタンスというモノが作られているわけだから、設計図と例えているんだと思う。

ぶっちゃけぼくはしっくりこないけど。

で、インスタンスって何やいな

インスタンスは、クラスから作られた〜っていうとさっきの説明とかぶっちゃうな。

インスタンスはnewキーワードで作られるもので、変数とかメソッドとかのを独立して動かすことができるもの。

書いてみる

ひとつ設定を呑んでほしい。
デジタル学生証をテーマにクラスを用意して、そのインスタンスを生成してみよう。

ここで作る学生証クラスDigitalStudentCardは学籍番号numと、学生の名前nameをフィールドに持っている。

class DigitalStudentCard{
  //学籍番号
  int num;

  //お名前
  String name;

  //出力する用のメソッド(自己紹介してもらう)
  String getSelfIntroduction(){
    return "学籍番号 : " + num + " 名前 : " + name);
  }
}

このクラスを使ってみよう。

class UseClass{
  public static void main(String[] args){

    //インスタンス生成
    DigitalStudentCardtanaka tanaka = new DigitalStudentCard();

    //インスタンス変数へ代入
    tanaka.num = 118114;
    tanaka.name = "田中角栄";


    //別のインスタンスを生成
    DigitalStudentCardnoguchi noguchi = new DigitalStudentCard();

    //新たに作ったインスタンスの変数へ代入
    noguchi.num = 118514;
    noguchi.name = "野口英世";

    //出力
    System.out.println(tanaka.getSelfIntroduction);
        // 学籍番号 : 118114 名前 : 田中角栄

    System.out.println(noguchi.getSelfIntroduction);
        // 学籍番号 : 118514 名前 : 野口英世

  }
}

ざっと、田中角栄くんと野口英世くんの学生証を発行してみた。
こうすることで、複数の変数に結びつきが生まれて関連していることがわかりやすくなるんじゃないかなって思う。

これがもし、クラスを使わなかったらtanakaNamenoguchiNameが作られてコードがぐちゃぐちゃに...
ゾッとするね。

こんな感じで、これから説明する機能の多くはコードを読みやすく、キレイに、シンプルにするためにある。
使いこなせばコード書くのが楽になっていくのでどんどん覚えていこう。

ちなみに

先ほど作ったtanakanoguchiは田中角栄くんと野口英世くんが同じ人間ではあるが、別人であるようにこいつらは別のものとして扱われる。

論理式で比較すると、こういう感じになる。

if(tanaka == noguchi){
  System.out.println("同じインスタンス");
}else{
  System.out.println("違うインスタンス");
}


/* 実行結果 */
// >>違うインスタンス

次回

次はコンストラクタを実装してみよう!
つぎ → Part.2 コンストラクタを使ってもっとすっきり

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?