#はじめに
超ド級の初心者である私が、私自身解る様にまとめた用語と解説集である。
Java入門の-第8章-「インスタンス」と「クラス」とはどういう事か?どのように動いているか?
が、解る様にまとめている。
#仮想世界の作り方
- オブジェクトを生み出す手順
①クラスを定義
②そのクラスに基づいて、オブジェクトを生成する。
-
クラスとオブジェクトは、全く違うものである。
-
仮想世界で活躍する
のは、**「インスタンス」**である。 -
オブジェクト
時々クラスのことを指して使われることもある曖昧なもの。 -
インスタンス
金型(クラス)ではなく、その型から生み出された仮想世界で活躍する実体を厳密に示すもの。 -
インスタンス化
クラスからインスタンスを生成することをいう。 -
[インスタンスとクラスの関係]
仮想世界で活躍するのは、**「インスタンス」であり、そのインスタンスを生み出す為の金型が、「クラス」**である。
#プログラムに登場する2つのクラス
「登場人物クラス」
「神様クラス」
※プログラムを作成していく上で、この2種のクラスが、必要である。
#クラスの定義方法
####[概要]
- 「クラスの宣言」
- 「属性の宣言」
- 「定数フィールド」
- 「this」
- 「メンバ」
######クラスの宣言
1 public class Hero {
2 }
######属性の宣言(フィールド)
1 public class Hero {
2 String name;
3 int hp;
4 }
-
フィールド
クラスブロック内の中
に宣言された変数をいう。 -
フィールドの宣言
属性を宣言するには、クラスブロックの中
に変数宣言を記述する。
※**「name」と「hp」**が、フィールドである。
######定数フィールド
フィールド宣言の先頭にfinalを付ける。finalを付ける事によって、値を書き換えできない
様にする。
1 public class Matango {
2 int hp;
3 final int LEVEL = 10;
######this
「自分自身」
のインスタンスを意味している。
- ドット「.」は、「の」と同じ意味。
1 public class Matango {
2 int hp;
3 void sleep() {
4 this.hp = 100;
5 System.out.println( this.name + "は、眠って回復した!");
6
this.hp = 100;
-
自分自身のインスタンスのhpフィールドに値100を代入という意味。
-
thisは、省略しない。
予想外の動作が起きる場合がある。フィールドを用いる際は、明示的にthisを付ける。
######メンバ
クラスの中にいる要素で、「フィールド」
と「メソッド」
の事である。
#クラス定義
①そのクラスに基づいて、インスタンスを生成できるようになる。
②そのクラスから生まれたインスタンスを入れる変数の型が利用可能になる。
例) Heroクラスを定義 → Hero型の変数が利用できる。
-
クラス型
クラスを定義することで、利用可能になる型。
※クラス型変数を準備する方法は、int型やString型と同じ。
例) Hero(クラス型) h(変数) = 100(値); -
インスタンスは、通常クラス型変数に入れて利用する。
例) Hero h ; -
クラス型変数を用いる理由
仮想世界内に、複数存在しうる同名インスタンスの中から、特定の1つのインスタンスをプログラム的に識別する為である。
#神様クラスの作り方(mainメソッドを持ったクラス)
- 神様クラスとは、mainメソッドを持ったクラスのことである。
- mainメソッドは、プログラムを実行させる際に、使用するメソッドである。
(Heroクラス等、他クラスで作成したプログラムは、mainメソッドを使う事で、動作する)
public static void main(String[] args) {
####[概要]
- 「インスタンスの生成」
- 「フィールドへの値の代入」
- 「インスタンスのメソッドの呼び出し」
######インスタンスの生成
-
[ クラス名 変数名 = new クラス名( ); ]
例) Hero h = new ( ); -
インスタンスを生成しているのは、右辺の「new Hero( )」という部分であり、「=」によって生成したインスタンスを型変数に代入している。
######フィールドへの値の代入
- [ 変数名 . フィールド名 = 値 ; ]
h.name = "ミナト";
- 勇者 h のフィールドに値を代入する文法
P.319 リスト8-12参照
1 public class Hero {
2 String name;
3 int hp;
4 void attack();
5 void run();
1 public class Main {
2 public static void main (String[] args) {
3 Hero h = new Hero () ;
4 h.name = "ミナト" ;
5 h.hp = "100" ;
6 System.out.println("勇者" + h.name + "を生み出しました!");
7 }
8 }
Mainクラスの**「h.name = "ミナト";」**の説明
-
h は、Hero h の 「 h 」。Hero型の変数「 h 」である。
-
name は、Heroクラスで定義したフィールドである。
-
"ミナト"は、値である。
######インスタンスのメソッドの呼び出し
- [ 変数名 . メソッド名( ) ]
h.sit(5);
h.slip();
h.sit(25);
h.run();
- h は、Hero型 h の h(変数)。
- sit, slip, sit, runは、メソッド名。
- 引数に渡された、「5」や「25」は、値 。
#簡単にまとめると
- インスタンスの生成には、「new」を使う。
- フィールドを利用する場合は、「変数名 . フィールド名」
- メソッドを呼び出す場合は、「変数 . メソッド名( )」
#まとめ
Java入門-第8章-の「インスタンス」と「クラス」とはどういう事か?また、どのように動いているか?が解る様に作成した。
#参考文献
スッキリわかるJava入門-第2版- 株式会社インプレス出版 中山清喬/国本大悟・著