ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
クラスとインスタンスの関係
クラスは「車の設計図」、インスタンスは「設計図から実際に組み立てた個別の車」と例えられます。
| 用語 | 役割 | 例 (車) |
|---|---|---|
| クラス | 属性・振る舞いの定義 | 「セダン車」の設計図 |
| インスタンス | クラスから生成された実体 | ナンバー 品川500あ12-34 の実車 |
| フィールド (プロパティ) | 個別インスタンスが持つ値 | 色 / 走行距離 |
| メソッド | インスタンスの振る舞い | 走る / 停まる |
| static (クラス変数) | クラス全体で共有する値 | 「メーカー名 = Toyota」 |
PHP でのクラスとインスタンス
class Car {
// フィールド (インスタンス変数)
public string $color;
public int $mileage = 0;
// クラス変数 (static)
public static string $maker = 'Toyota';
// コンストラクタ
public function __construct(string $color) {
$this->color = $color;
}
// インスタンスメソッド
public function run(int $km): void {
$this->mileage += $km;
}
// クラスメソッド (static)
public static function getMaker(): string {
return self::$maker;
}
}
// インスタンス化
$car1 = new Car('red');
$car2 = new Car('blue');
$car1->run(100);
echo $car1->mileage; // 100
echo $car2->mileage; // 0 (独立)
// static アクセス
echo Car::$maker; // Toyota
echo Car::getMaker();
Java でのクラスとインスタンス
public class Car {
// フィールド
private String color;
private int mileage = 0;
// static フィールド
public static String MAKER = "Toyota";
// コンストラクタ
public Car(String color) {
this.color = color;
}
// インスタンスメソッド
public void run(int km) {
this.mileage += km;
}
public int getMileage() { return mileage; }
// static メソッド
public static String getMaker() {
return MAKER;
}
}
// 利用
Car car1 = new Car("red");
Car car2 = new Car("blue");
car1.run(100);
System.out.println(car1.getMileage()); // 100
System.out.println(Car.MAKER); // Toyota
Python での同等コード
class Car:
maker = 'Toyota' # クラス変数
def __init__(self, color):
self.color = color # インスタンス変数
self.mileage = 0
def run(self, km):
self.mileage += km
@classmethod
def get_maker(cls):
return cls.maker
car1 = Car('red')
car2 = Car('blue')
car1.run(100)
print(car1.mileage) # 100
print(Car.maker) # Toyota
this / self の意味
class User {
public string $name;
public function __construct(string $name) {
$this->name = $name; // ← この時の $this はこれから作るインスタンス
}
public function hello(): string {
return "I am {$this->name}"; // ← 呼び出し元インスタンス
}
}
$a = new User('Taro');
$b = new User('Hanako');
echo $a->hello(); // I am Taro ($this = $a)
echo $b->hello(); // I am Hanako ($this = $b)
Singleton パターン
あるクラスのインスタンスをプロセス内に 1 つだけ持つ設計:
class Config {
private static ?Config $instance = null;
private array $values = [];
// private にして外部から new できないようにする
private function __construct() {}
public static function getInstance(): self {
if (self::$instance === null) {
self::$instance = new self();
}
return self::$instance;
}
public function get(string $key): mixed {
return $this->values[$key] ?? null;
}
}
$cfg = Config::getInstance();
$cfg2 = Config::getInstance();
var_dump($cfg === $cfg2); // true (同じインスタンス)
Factory パターン
abstract class Animal {
abstract public function speak(): string;
}
class Dog extends Animal {
public function speak(): string { return 'Woof'; }
}
class Cat extends Animal {
public function speak(): string { return 'Meow'; }
}
class AnimalFactory {
public static function create(string $type): Animal {
return match ($type) {
'dog' => new Dog(),
'cat' => new Cat(),
default => throw new InvalidArgumentException("Unknown: $type"),
};
}
}
echo AnimalFactory::create('dog')->speak(); // Woof
無名クラス (Anonymous Class)
// PHP 7+ 無名クラス
interface Logger {
public function log(string $msg): void;
}
function process(Logger $l): void {
$l->log('done');
}
process(new class implements Logger {
public function log(string $msg): void {
echo "[LOG] $msg";
}
});
// Java の無名クラス
Runnable r = new Runnable() {
@Override
public void run() { System.out.println("hi"); }
};
new Thread(r).start();
クラス vs インスタンスメンバの早見表
| 項目 | インスタンスメンバ | static メンバ |
|---|---|---|
| アクセス | $obj->field | ClassName::$field |
| this 利用 | 可 | 不可 (self / static のみ) |
| 用途 | 個別の状態 | クラス全体で共有 (定数 / カウンタ) |
| テスト容易性 | ○ (DI 可能) | × (グローバル状態) |
FAQ
Q: クラスとオブジェクトと インスタンスは同じもの?
A: オブジェクト = インスタンスとほぼ同義です。クラス = 型、インスタンス = 実体。
Q: PHP で new を忘れたら?
A: $user = User::class; はクラス名文字列が入るだけ。$user->name しても Fatal error になります。
Q: static を多用してはいけない?
A: グローバル状態になりテストが困難になります。DI (依存性注入) でインスタンス渡しが推奨です。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?