javaのインスタンスについて理解する
Javaはコンパイル言語のため、実行の前にコンパイルが必要になります。
コンパイル方法が分からない方は下記でコンパイル方法を学習してください。
環境
- Windows10,11
- Java 19.0.1
流れ
- 今回使用するプログラムの概要
- 用語説明
- クラスの作成
- インスタンス作成
- インスタンス実行
- コード全体
今回使用するプログラムの概要
今回はスポーツを題材にしたプログラムを作成していきます。
処理としては、クラスに定義したメソッド(処理)を用いて、競技名を出力するものになります。
用語説明
オブジェクト指向
そもそもですが、Javaはオブジェクト指向の言語です。
オブジェクト指向とは
オブジェクト(部品となる物)を作成し、それらのオブジェクトを組み合わせて、プログラム行う言語になります。
また、これから説明するインスタンス化はオブジェクト指向の言語において必須となる工程になります。
クラス・インスタンス・インスタンス化について
クラスとは設計図にあたるものであり、クラスを元にインスタンス(オブジェクト)を作成します。
インスタンス化(オブジェクト化)とは、クラスを元にインスタンス(オブジェクト)を作成することを言います。
要約
- クラス=設計図
- インスタンス(オブジェクト)=部品
- インスタンス化(オブジェクト化)=設計図を元に部品を作成すること
クラスの作成
それではまず、設計図となるクラスを作成します。
ファイル名「Test.java」を作成してください。
クラスは下記2つの要素で構成されます。
- フィールド クラスブロック内に宣言された変数(データ)のこと
- メソッド クラスで行われる処理のこと
今回の場合、クラス名、フィールド名、メソッド名は下記になります。
クラス名:Sport
フィールド名:name
メソッド名:getname
class Sport {
// フィールド(またはメンバー変数、フィールド変数、インスタンス変数)
String name;
//メソッド
public void getname() {
System.out.println("競技名は" + this.name + "です");
}
}
上記のクラスを元にインスタンスの作成をしていきます。
インスタンス作成
作成したクラスをもとに、インスタンスを作成します。
インスタンスの作成は、「new演算子」を使って下記のように記述します。
クラス名 インスタンス名 = new クラス名();
今回の場合は下記がクラス名とインスタンス名です。
クラス名:Sport
インスタンス名:soccer
public class Test {
public static void main(String[] args) {
Sport soccer = new Sport();
}
}
インスタンスの実行
インスタンスの実行には、フィールド(変数)nameへ値の代入と、メソッドを利用するための記述が必要になります。
フィールド(変数)nameに値を代入
フィールド(変数)に値を代入する記載は下記になります。
インスタンス名.フィールド(変数)名 = 代入する値;
今回の場合、インスタンス名とフィールド(変数)名は下記になります。
インスタンス名:soccer
フィールド(変数)名;:name
代入する値:サッカー
public class Test {
public static void main(String[] args) {
Sport soccer = new Sport();
soccer.name = "サッカー"; //追記
}
}
メソッドを利用するための記述
最後にクラスで定義した「getnameメソッド」を利用するための記述をします。
クラス定義した通り、getnameメソッドの処理の内容は、変数(name)を利用した出力処理です。
メソッドを利用するには下記のように記載します。
インスタンス名.メソッド名();
今回の場合、インスタンス名とメソッド名は下記になります。
インスタンス名:soccer
メソッド名:getname
public class Test {
public static void main(String[] args) {
Sport soccer = new Sport();
soccer.name = "サッカー";
soccer.getname(); //追記
}
}
コンパイルを実施し、下記の出力が出来ていれば成功です。
競技名はサッカーです
コード全体
上記すべてを記載したコードの全体は下記になります。
また、下記は複数のインスタンスを作成した場合のコードも追記した内容になっています。
//クラスの定義//
class Sport {
//フィールド
String name;
//メソッド
public void getname() {
System.out.println("競技名は" + this.name + "です");
}
}
// インスタンス化
public class Test3 {
public static void main(String[] args) {
Sport soccer = new Sport();
soccer.name = "サッカー"; //インスタンス変数nameにサッカーを代入
soccer.getname(); //getnameメソッドを使用
Sport baseball = new Sport();
baseball.name = "野球"; //インスタンス変数nameに野球を代入
baseball.getname(); //getnameメソッドを使用
Sport basketball = new Sport();
basketball.name = "バスケットボール"; //インスタンス変数nameにバスケットボールを代入
basketball.getname(); //getnameメソッドを使用
}
}