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年4月2日f文字列の中の「:>10,」はどういう意味?
山崎講師2025年4月2日プログラミング言語別「メインメソッド」徹底解説|エントリーポイントの違いとその意味とは?
山崎講師2025年4月2日コメントの正しい書き方とは?—読みやすく、伝わるコードにするためのルールとコツ
山崎講師2025年4月2日セミコロンは必要?不要?—言語ごとのルールと本当の意味を徹底解説!