PythonとJavaのstaticの違いと共通点をやさしく解説!クラスとインスタンスの違いがカギ!
こんにちは。ゆうせいです。
プログラミングを学んでいると、static(スタティック)というキーワードに出会います。
Javaではよく使うし、Pythonでも@staticmethodって見かけるけど…
「これって一体なんのためにあるの?」
「インスタンスメソッドと何が違うの?」
という方も多いと思います!
この記事では、JavaとPythonにおけるstaticの意味と使い方を初心者向けに徹底解説します。
h2: staticってそもそも何?
まずは考え方からおさえましょう。
staticとは、「インスタンスに属さない、クラスそのものに属する」という意味です。
例えるなら:
- インスタンスメソッド:生徒1人1人が持つノート
 - staticメソッド:教室に貼られてる掲示板
 
つまり、インスタンスを作らなくても使えるのがstaticなものなんです!
Javaのstaticの使い方
Javaでは、次のように使います。
static変数(クラス変数)
public class Person {
    static int count = 0;
    public Person() {
        count++;
    }
}
Person.countでアクセス可能- すべてのインスタンスで共有
 
staticメソッド(クラスメソッド)
public class MathUtil {
    public static int square(int x) {
        return x * x;
    }
}
呼び出し方:
int result = MathUtil.square(5);  // 25
newしなくても呼び出せる! これが最大の特徴です。
Pythonのstaticな考え方
Pythonにはstaticというキーワードはありませんが、同じような役割をする仕組みがあります。
それが @staticmethod と @classmethod です!
@staticmethod(静的メソッド)
class MathUtil:
    @staticmethod
    def square(x):
        return x * x
呼び出し方:
print(MathUtil.square(5))  # 25
- インスタンスを作らずに呼び出せる
 selfもclsも受け取らない
@classmethod(クラスメソッド)
class Counter:
    count = 0
    @classmethod
    def increment(cls):
        cls.count += 1
clsはクラスそのものを受け取る- クラス変数を操作したいときに使う
 
h2: インスタンスメソッドとの違いを整理しよう!
| 種類 | Javaでの書き方 | Pythonでの書き方 | 特徴 | 
|---|---|---|---|
| インスタンスメソッド | public void greet() | def greet(self): | インスタンスを経由して呼ぶ | 
| クラスメソッド | public static void greet() | @classmethod def greet(cls): | クラスを受け取って動作 | 
| 静的メソッド | public static void greet() | @staticmethod def greet(): | インスタンス・クラスを受け取らない | 
h2: よくある疑問とその答え!
h3: staticを使うメリットは?
- 共通の機能をまとめられる
- 例:数学関数、日付の処理など
 
 - インスタンス生成なしで使える
- メモリ節約、構造がシンプル
 
 
h3: staticは多用してもいいの?
便利ですが、使いすぎはオブジェクト指向の考え方から外れるので注意!
- 「その機能は本当にインスタンスに関係ない?」と考えてから使おう!
 
h2: まとめ
staticは、クラスに直接ひも付く属性やメソッドを定義するときに使う- Javaではキーワードで明示、Pythonでは
@staticmethodや@classmethodで実現 - インスタンスを作らずに呼び出せるのが特徴
 - 共通処理の整理やクラス設計のメリハリに役立つ!
 
h2: 次のステップ!
このあと学ぶとより理解が深まります!
- Pythonの
classmethodとstaticmethodの使い分け - Javaの
staticとインスタンスのライフサイクル - シングルトンパターンなど、
staticを使ったデザインパターン - ユーティリティクラスの設計と活用
 
「クラスの設計が苦手」「staticと継承の関係がよくわからない」など、気になるところがあれば何でも聞いてください!じっくり丁寧に解説します!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
 - 
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。 
最新の投稿
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能④
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能③
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能②
山崎講師2025年11月2日Pythonの「なるほど!」と思えるユニークな機能①