staticメソッドとインスタンスメソッド
staticメンバーとインスタンスメンバーを使い分ける場面と、呼び出し方の違いを理解します。
「staticメソッドとインスタンスメソッド」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全3レッスンが含まれています。
static とは
考え方:static メンバーはクラスに属します。インスタンスメンバーは各オブジェクトに属します。
インスタンスメンバー
インスタンスメソッドは、オブジェクトごとの状態を使います。user.login() のように、変数に対して呼び出します。
static メンバー
static メソッドやフィールドは共有されます。クラス名を通じて、たとえば Math.max(a, b) のように呼び出します。
static とインスタンスの選択
動作がオブジェクトの状態に依存する場合はインスタンスを選びます。純粋なユーティリティやクラス全体で共有するカウンターには static を選びます。
注意点
static メソッドでインスタンスフィールドを使わないようにします。オブジェクト固有の状態が必要な場合は static を避けます。
デモ:static とインスタンス
実行して、オブジェクトに対するインスタンスの呼び出しと、クラスを通じた static の呼び出しを確認します。カウンターは共有されます。
public class Main {
public static void main(String[] args) {
// Two Person objects hold different names
Person a = new Person("Ada");
Person b = new Person("Bob");
// Instance method: needs an object
a.greet();
b.greet();
// Static method/field: belong to class Utils
int s = Utils.add(7, 5); // pure function
System.out.println("sum = " + s);
Utils.bumpCounter();
Utils.bumpCounter();
System.out.println("counter = " + Utils.counter); // shared across all
}
static class Person {
private String name;
Person(String name) { this.name = name; }
void greet() {
System.out.println("Hello, " + name + "!");
}
}
static class Utils {
static int counter = 0; // static field (shared)
static int add(int x, int y) { // static method (pure)
return x + y;
}
static void bumpCounter() { // static method (mutates shared)
counter = counter + 1;
}
}
}
理解度を確認
クイックチェック:オブジェクトを先に1つも作成せずに動作する呼び出しはどれですか。
復習
復習:static はクラスレベルで共有され、インスタンスはオブジェクトごとの動作や状態を持ちます。
よくある質問
「staticメソッドとインスタンスメソッド」レッスンは無料ですか?
はい。「staticメソッドとインスタンスメソッド」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全3レッスンが含まれています。
「staticメソッドとインスタンスメソッド」で何を学びますか?
staticメンバーとインスタンスメンバーを使い分ける場面と、呼び出し方の違いを理解します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Java Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。
「staticメソッドとインスタンスメソッド」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このJava Academyレッスンでコードを書いて実行できますか?
はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Javaの値渡し
- staticメソッドとインスタンスメソッド
- メソッド分解とクリーンコード