インスタンス変数
class Dog {
String name; // インスタンス変数
int age; // インスタンス変数
// コンストラクタでインスタンス変数に値を設定
Dog(String name, int age) {
//this.nameはインスタンス変数 thisは、現在のオブジェクトを指すキーワード
//nameは引数として受け取ったname
this.name = name;
this.age = age;
}
}
インスタンス変数: 各インスタンスに属する変数で、オブジェクトの状態を表す。例: nameやage
コンストラクタ
オブジェクトの初期化を行う
// コンストラクタ
Car(String color, String model) {
this.color = color; // 引数で受け取った色をプロパティに設定
this.model = model; // 引数で受け取ったモデルをプロパティに設定
}
インスタンス
//クラス
class Dog {
String name;
int age;
Dog(String name, int age) {
this.name = name;
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Dog dog1 = new Dog("Buddy", 3); // dog1はDogクラスのインスタンス
Dog dog2 = new Dog("Max", 5); // dog2もDogクラスのインスタンス
System.out.println(dog1.name); // 出力: Buddy
System.out.println(dog2.name); // 出力: Max
}
}
クラス:クラスは、データ(属性)とメソッド(機能)を定義するための構造です。例えば、Dogクラスは犬の特性(名前や年齢)や行動(吠える、走るなど)を定義します。
インスタンス:クラスから生成された具体的なオブジェクト
オブジェクト
オブジェクトとは、さまざまな実体の総称
でも色々な概念があり、はっきり分からない
Static変数
staticフィールドは、クラスのすべてのインスタンスで共有される変数
クラスをインスタンス化せずに変数にアクセスできる
インスタンスごとに異なる値を持たせる必要がない場合に使用
すべてのインスタンスで共有される値なので、グローバル変数のように使う
Staticメゾット
newを使ってインスタンスを生成せずに呼び出すことができるメソッド
インスタンスを生成せずに呼び出したいメソッドがあるときに使用
これにより、メソッドを呼び出すときに毎回インスタンスを生成する必要がなくなるため、簡潔にコードを記述することができるようになる
public class MathUtils {
// staticメソッド
public static int add(int a, int b) {
return a + b;
}
}
public class Main {
public static void main(String[] args) {
int result = MathUtils.add(5, 10);
System.out.println(result); // 出力: 15
}
}
Static(定数)
tatic finalを使うことで、変更不可能な定数を定義できる。
これにより、クラス全体で共通の定数を持つことができる
インスタンス化
クラス という 「型」 から 「具体的な実体」 に生成されたものを インスタンス と呼びます。
そして、それらの一連の流れを インスタンス化 とよびます。
システム開発の現場では、インスタンスを生成することを「newする」とか言ったりするみたいです。
staticメゾットとインスタンスメゾットの使い分け
staticメソッドを使う時
インスタンスの生成前に実行すべきメソッド
インスタンスの状態に依存しない処理をさせるとき
ユーティリティメソッド(決まりきった処理、頻繁に呼び出される処理に使用する)
与えられた引数のみでメソッドの挙動が決まるとき
オーバーライドする予定がないとき
属性の参照・変更がなく、引数と戻り値のみで完結する場合
ファクトリメゾット
インスタンスメゾットを使うとき
staticを使わない時
結論:大体はインスタンスメゾットをつかってOK