【Java】はじめてのプログラム【クラス】

クラスって何?

生徒
生徒

教授?
Javaのクラスって何ですか?

教授
教授

プログラムを入れるための「器」だと思ってください。
最初に「これはプログラムを入れる器です」と宣言することを、クラスの宣言と言います。

public class Mokemoke{
}
生徒
生徒

Mokemokeというクラスを宣言しているのですね。

何か、決まりはあるのですか?

教授
教授

まずは、可視性です。
可視性とは、スコープとも言いますよ。
クラスやメソッドが他のクラスから参照できるか決めるものです。

生徒
生徒

んー。
メソッドって何ですか?

教授
教授

プログラムの処理をまとめたものですよ。
例えば、
public static void main(String[]args)
というのもメソッドの一種です。

生徒
生徒

前回、出てきたヤツですね。

教授
教授

前回説明していたのは、メインメソッドというものになります。
話を戻しますが、可視性について最初のうちは覚えるということも大事ですね。

publicアクセス制限は特になく、すべてのクラスから参照可能
protected同じパッケージと子クラスから参照可能
指定なし同じパッケージからのみ参照可能
private自クラスからのみ参照可能
Javaの可視性(スコープ)
生徒
生徒

ということは、さっきのMokemokeクラスは、publicだったのですべてのクラスから参照可能というわけですね。

教授
教授

そうなります。
ちなみに、クラスの名前は、大文字で始めることになっていますので、注意してください。

・クラスの宣言
【可視性】 class 【クラス名】{
}

・クラス名の最初の文字は大文字にする

【変数の宣言】クラスの中身を作る

生徒
生徒

ところで、プログラムはいつ動くのですか?

教授
教授

Mokemokeクラスのことですね。
もう少し手間がかかりますよ。
変数を宣言しましょう。

生徒
生徒

ちなみに、Mokemokeとはなんですか?

教授
教授

Mokemokeはもけもけです。
もけもけは、教授の乗り物です。
白くてもけもけしたヤツです。
では、変数の宣言です。

public class Mokemoke{
     public String color;
     public String size;
     private String gainSpeed;
}
生徒
生徒

変数にも決まりがあるのですか?

教授
教授

もちろん、あります。

・変数の宣言
【可視性】【型】【変数名】
例)private String speed

・変数名の最初の文字は小文字にします

生徒
生徒

ところで、変数gainSpeedだけは可視性がprivateですよね。
何か理由があるのですか?

教授
教授

ええ、colorやsizeは見た目の問題なので、他から見えても問題ありません。
gainSpeedは、見えるものではないのでprivateにしてあります。
教授は安全運転なのですよ?

生徒
生徒

なるほど。
コンプライアンス的に伏せておいた方が良い情報なのですね。

【メソッドの宣言】クラスの中身を作る

教授
教授

次はメソッドを作っていきますよ。

生徒
生徒

これにも決まりがあるのですか?

教授
教授

もちろん、ありますよ。

・メソッドの宣言
【可視性】【戻り値の型】【メソッド名】【引数】

・戻り値が無い場合は、void と書きます

教授
教授

最初は、スピードからです。

生徒
生徒

教授?
安全運転でお願いします。

public void speed(){
     //スピードを出す
     System.out.println(gainSpeed);
}
教授
教授

シンプルに変数gainSpeedの中身を表示するだけですよ。

生徒
生徒

スピードメーターみたいな感じですね。

教授
教授

次はしゃべらせてみましょう。

生徒
生徒

しゃべるという動きを表現するのですね。

public void speak(String words){
     //話す
     System.out.println(words + "もけもけ");
}
教授
教授

さらに、飛ばしてみましょう。

生徒
生徒

なんと!
もけもけは飛べるのですか?!

public String takeOff(){
     //飛ぶ
     String fly = "もけもけ飛びます!";
     return fly;
}
教授
教授

これで飛びますよ?

生徒
生徒

初めて、戻り値がString(文字列)になりましたね。

教授
教授

そうですね。
変数flyをreturnで返しますよ。

生徒
生徒

この変数flyの可視性は何ですか?
指定なしなのですか?

教授
教授

メソッドの中の変数は、そのメソッドの中でしか使えませんので、可視性は特にありません。
クラスの変数を「メンバ変数」、メソッドの変数を「ローカル変数」と言います。

・メソッド名の最初の文字は小文字にします
・引数は、型と引数名をセットにします(複数の場合は「,」(カンマ)で区切ります)

教授
教授

ここまでよろしいですか?

生徒
生徒

一応、プログラムを書きましたよ。

public class Mokemoke{
     public String color;
     public String size;
     private String gainSpeed;

     public void speed(){
          //スピードを出す
          System.out.println(gainSpeed);
     }

     public void speak(String words){
          //話す
          System.out.println(words + "もけもけ");
     }

     public String takeOff(){
          //飛ぶ
          String fly = "もけもけ飛びます!";
          return fly;
     }
}

【オブジェクト化】インスタンス化する【new】

教授
教授

それでは、もけもけを召喚しましょう。

生徒
生徒

召喚? 呼び出すのですか?

教授
教授

ええ、実体化させますよ。
その前にコンストラクタの使い方を学びましょう。

生徒
生徒

コンストラクタとは何ですか?

教授
教授

インスタンス化する時に、必ず必要な情報はコンストラクタで渡すのです。
もけもけの色とかサイズですね。

生徒
生徒

そういえば、そんな変数も宣言しましたね。

教授
教授

次のように入力しますよ。

pubulic Mokemoke(String size,String color){
     this.size = size;
     this.color = color;
}
生徒
生徒

さっきのコードと組み合わせてみました。

public class Mokemoke{
     public String color;
     public String size;
     private String gainSpeed;

     pubulic Mokemoke(String color,String size){
          this.color = color;
          this.size = size;
     }

     public void speed(){
          //スピードを出す
          System.out.println(gainSpeed);
     }

     public void speak(String words){
          //話す
          System.out.println(words + "もけもけ");
     }

     public String takeOff(){
          //飛ぶ
          String fly = "もけもけ飛びます!";
          return fly;
     }
}
教授
教授

ちなみに、thisというのは、メンバ変数を参照するときの書き方になります。
つまり、this.color = colorのthisが付いている方のcolorという変数は、public String colorの方のcolorを示していますよ。

生徒
生徒

同じ変数名だから混同しないように、thisをつけるということですね。

教授
教授

では、もけもけ召喚です。

public class Main{
     pubulic static void main(String[]args}{
          Mokemoke mokemoke = new Mokemoke("白っぽい","大きい");
     }
}
生徒
生徒

思ったより、デカい。
話すこともできるのですか?

教授
教授

話す時はこのようにしますよ。

public class Main{
     pubulic static void main(String[]args}{
          Mokemoke mokemoke = new Mokemoke("白っぽい","大きい");
          Mokemoke.speak("ボクを呼びましたか?");
     }
}
教授
教授

ちなみに、飛ぶときはこうします。

public class Main{
     pubulic static void main(String[]args}{
          Mokemoke mokemoke = new Mokemoke("白っぽい","大きい");
          Mokemoke.takeOff();
     }
}
生徒
生徒

あ、どっか飛んで行った!
まあ、いいか。

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