Help us understand the problem. What is going on with this article?

Java言語におけるクラスとは(2/?)

More than 1 year has passed since last update.

初めに

こんばんは。またたびです。
先日の記事たくさんの閲覧、コメントありがとうございました。
まさかここまで見ていただけるとは思っていなかったので正直びっくりしています。
そして、幼稚な内容の記事を投稿してしまい申し訳ありませんでした。
これから慣れていくのでもう少し我慢してお付き合い頂けると幸いです。

インスタンス

今回はインスタンスについて書いてきます。
コメントを頂きましたが、オブジェクト指向とは命令を書くものなので猫を作るプログラムは本来のプログラムとは異なっていますが、今回はわかりやすよう猫を用いていきます。
また先日同様、僕がjavaを勉強する上で用いていたテキストを参考文献に記載しておくので読んでみてください。
それでは、例としてたくさんの猫を作るプログラムを書いていきます。

Cat.java
public class Cat{
  String name;
  int onaka;
  static int esa = 10;

  Cat(){
  }

  Cat(String name){
    this.name = name;
  }

  void run(){
    System.out.printlf(name + "は走った");
    name.onaka -= 10;
  }

  void gohan(int eat){
    this.esa -= eat;
    this.onaka += eat;
  }
}

猫には名前があり、空腹度があるとしました。
走るとお腹が空きます。
また、猫はご飯を食べるのでお家のご飯の残量を定義しました。
ご飯を食べるを空腹度が満たされます。
またCat()とCat(String name)はコンストラクタといい、Catのインスタンスを生成時に呼び出されるものになっています。
インスタンスにつきましては下で説明しています。
そのため、Catのインスタンス生成時、引数がない場合は何もしないCat()を、String型の引数がある場合には名前を設定するCat(String name)を呼び出すことになります。
このように同じメソッドでも引数や、型の順番などが異なるメソッドを作成することをオーバーロードといいます。

Main.java
public class Main{
  public static void main(String[] args){
    Cat a = new Cat();
    a.name = "kuro";
    a.onaka = 50;
    Cat b = new Cat("shiro");
    b.onaka = 30;

    a.run();
    a.gohan(5);
  }
}

このMain.javaについて説明していきます。
3行目の右側の辺はCatクラスのインスタンスというものを生成しています。
インスタンスを用いることで、下記のような記述で2種類の猫を作成できるようになり、値も各々持つことが出来ます。
ここで作成したインスタンスを左辺のCat型の変数aに代入しています。
その下の2行でaの猫にkuroと名付け、空腹度を設定しています。
次に6行目の左辺ですが、ここには渡す値にshiroと入っています。
これはCatクラスの9行目のCat(Sting name)を呼び出しており、ここで猫bの名前を設定しています。
その後、猫bの空腹度を設定しています。
次の行ではrun()メソッドを呼び出して猫aを走らせているため、Catクラスのrun()メソッドに記述してある通り、猫aの空腹度が10減ります。
その後猫aはご飯を5食べています。
ここが今回のポイントとなっていますが、Catクラスのesaフィールドにはstaticというものがついています。
フィールドにstaticがついている場合は、全てのインスタンスで値を共有するという意味であるため、猫a、猫bどちらでesaの残量を出力しても95と表示されます。
staticって便利!!!!!
今日はここまでにします

終わりに

今日は比較的短時間で記事をまとめることが出来ました。
まさか昨日の一日でここまで早く書けるようになるとは…
明日も予定がないはずなので、午前中はVue.jsのお勉強をして、午後に記事を書いていこうと思います。
明日は多分カプセル化について書きます。
ここまで読んでくださりありがとうございました。
間違いや表現のおかしい部分がありましたらコメント頂けると幸いです。

参考文献

スッキリわかるJava入門 第2版 (スッキリシリーズ)

matatabi_data
しがない大学院生をやっております。 Twitterをやっておりますのでフォローお待ちしております。頻度は() @matatabi_data
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away