【5分レッスン】Java超入門コース#13 クラス

はじめに

こんにちは。キノコードです。
「【5分レッスン】Java超入門コース#13 クラス」について説明します。

クラスとは?

まずクラスについて説明します。
クラスとは、「データ」と「処理」をまとめたものになります。
Javaでは、「データ」のことをフィールドといい、「処理」のことをメソッドといいます。
メソッドとフィールドのようなクラスの要素のことをメンバーといいます。
Javaのプログラムは、このクラスを組み合わせて作るので、 Java の根幹となる仕組みです。
ちなみに、メソッドについては、前のレッスンで説明をしました。
詳しく知りたい方は、前のレッスンをご覧ください。

フィールドとは

フィールドについて説明します。
フィールドは、クラス内で定義された変数のことで、メンバー変数とも言います。
フィールドは、変数と同じように、数値や文字列を代入したり、参照したりすることができます。
クラスにフィールドを追加することを「フィールドを定義する」といいます。

クラスのコードの意味

ソースコードをみていく前に、どんなクラスを定義するか説明します。
いつも使っていたLessonクラスの他に、Studentというクラス名のものを作ります。
クラス名はStudentとします。
そのクラスに生徒の名前を代入する「name」というフィールドを定義します。
そして、数学と英語の点数の平均を計算するcalculateAvgというメソッドを定義します。
それでは、ソースコードを見ていきましょう。

class Student{
   String name = "sato";

   public void calculateAvg(int math,int english) {
   System.out.println((math + english)/2);
   }
}

public class Lesson13_01{
  public static void main(String[] args){
  Student a001 = new Student();
  a001.name = "sato";

  System.out.println(a001.name);
  }
}

まず、classと書いて、次にクラス名を書きます。ここがクラスの定義です。
今回はStudentというクラス名なので、Student。
クラス名の最初のアルファベットは大文字にします。これはJavaのルールなので、覚えておきましょう。
次に、フィールドを定義します。
フィールドには、佐藤さん、鈴木さんといったような名前の文字列を代入したいのでString型。
フィールド名はnameとします。
次に、平均点を算出するcalculateAvgというメソッドを定義します。
int型のmathとenglishという値を渡すと、その2つの平均を出すメソッドを定義します。
2つの平均の出し方は、足して割る2です。math足すenglish、割る2です。
計算結果が表示されるようにプリントラインを書きます。
これでフィールドとメソッドの定義はおわりです。

クラスの使い方(インスタンス化)

実際に使ってみたいと思いますが、クラスはこのままでは使うことはできません。
クラスは、クラスから作られたインスタンスを変数に代入してから使います。
クラスは、インスタンスになって初めて使えるようになります。
インスタンスを作ることを「インスタンス化」「オブジェクト化」「オブジェクト生成」といったりします。
わかりにくいと思うので、ソースコードでみてみましょう。
まず、クラス名を書きます。次に、オブジェクト名。
オブジェクト名は、aという学級の出席番号001番としておきましょう。
イコールを書いて、new演算子という「new」を書きます。クラス名に丸括弧をつけて、おわりのコロン。
インスタンス化が終わり、クラスを使えるようになりました。
フィールドに値を代入してみましょう。
代入方法は、オブジェクト名のあとにピリオド、フィールド名です。
a学級の出席番号001番は、佐藤さんとします。
satoと代入しましょう。
a001というオブジェクトのnameには、satoが入っているはずです。
実行してみましょう。
satoと表示されました。
ちなみに、インスタンスとは、実体という意味です。
なので、インスタンス化とは、実体化という意味です。
つまり、インスタンス化とは、クラスという型から、インスタンスという実際に扱える「モノ」を作ることことをいいます。

class Student{
   String name = "sato";

   public void calculateAvg(int math,int english) {
   System.out.println((math + english)/2);
   }
}

public class Lesson13_02{
  public static void main(String[] args){
  Student a001 = new Student();
  a001.name = "sato";

  System.out.println(a001.name);
  a001.calculateAvg(90,80);
  }
}

次に、calculateAvgメソッドを使ってみましょう。
90点と80点の平均点を算出するコードを記述します。答えは85となるはずです。
引数に90と80を代入。85と表示されるはずです。
実行してみます。
予想通りの結果となりました。

class Student{
  String name;
  
  public void calculateAvg(int math,int english) {
    System.out.println((math + english)/2);
  }
}

public class Lesson13_03{
  public static void main(String[] args){
    Student a001 = new Student();
    a001.name = "sato";
    System.out.println(a001.name);
    a001.calculateAvg(90,80);

    Student a002 = new Student();
    a002.name = "suzuki";
    System.out.println(a002.name);  
  }
}

次に、a002というオブジェクトを作って、nameフィールドにsuzukiと代入してみましょう。
a001というオブジェクトには佐藤さん、a002には鈴木さんが入っているはずです。
表示させてみましょう。
suzukiと表示されました。

class Student{
  String name;
  
  public void calculateAvg(int math,int english) {
    System.out.println((math + english)/2);
  }
}

public class Lesson13_04{
  public static void main(String[] args){
    Student a001 = new Student();
    a001.name = "sato";
    System.out.println(a001.name);
    a001.calculateAvg(90,80);

    Student a002 = new Student();
    a002.name = "suzuki";
    System.out.println(a002.name);  
    a002.calculateAvg(70,80);
  }
}

a002オブジェクトのcalculateAvgメソッドも使えるか確認してみましょう。
70と80の平均なので75が表示されるはずです。
実行してみましょう。
75点も表示されました。a002のcalculateAvgメソッドも使えます。
以上がクラスの使い方です。

クラスの便利なところ

クラスの便利なところはどんなところでしょう?
クラスは一度、定義しておけば、あとからいくらでもオブジェクトを作ることができます。
イメージとしては、パソコンで使うコピペです。
コピペでどんどんオブジェクトを作ることができます。
もしクラスがなければ、生徒ひとりひとりのためにコードを書かなければいけないので面倒です。
ちなみに、このようにオブジェクトを取り入れてプログラムを構築することをオブジェクト指向プログラミングといいます。
オブジェクト指向を取り入れることで、プログラムの開発が効率的になります。
オブジェクト指向の考え方は奥が深いので、別のコースを作ります。そちらもご覧ください。

KinoCode チャンネル

YouTubeで毎日動画配信しています。
動画は3分間なので、
 ・通勤時間
 ・お昼休み
 ・お手すきのとき
 ・寝る前
など手軽に視聴できます。
 
ちょっとしたインプットにどうぞ!
 
▼チャンネル登録はこちらからどうぞ。