ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
クラスの基本構文
public class User {
// フィールド (状態)
private String name;
private int age;
// コンストラクタ
public User(String name, int age) {
this.name = name;
this.age = age;
}
// メソッド (振る舞い)
public String getName() { return name; }
public int getAge() { return age; }
public void birthday() {
age++;
}
@Override
public String toString() {
return "User{name=" + name + ", age=" + age + "}";
}
}
// 使う側
User u = new User("Alice", 30);
u.birthday();
System.out.println(u); // User{name=Alice, age=31}
アクセス修飾子
| 修飾子 | 同じクラス | 同じパッケージ | サブクラス | その他 |
|---|---|---|---|---|
public | O | O | O | O |
protected | O | O | O | X |
| (無指定 = package-private) | O | O | X | X |
private | O | X | X | X |
カプセル化の基本: フィールドは private、必要なものだけ public な getter/setter で公開します。
static / final / abstract
public class MathUtil {
// static フィールド = クラス共有の値 (定数)
public static final double PI = 3.14159265;
// static メソッド = インスタンス不要で呼べる
public static double square(double x) {
return x * x;
}
}
// インスタンス化せず呼ぶ
double area = MathUtil.PI * MathUtil.square(5);
// abstract = 抽象クラス (インスタンス化できない)
public abstract class Animal {
abstract String sound();
public void introduce() {
System.out.println("I say " + sound());
}
}
// 継承して実装
public class Dog extends Animal {
String sound() { return "Woof"; }
}
// final クラス = 継承不可 (String, Integer 等)
public final class Constants { ... }
コンストラクタとオーバーロード
public class User {
private String name;
private int age;
// デフォルトコンストラクタ (引数なし)
public User() {
this("(Unknown)", 0); // this() で他コンストラクタを呼ぶ
}
public User(String name) {
this(name, 0);
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
// 全て有効
new User();
new User("Alice");
new User("Alice", 30);
内部クラス 4 種
| 種類 | 定義場所 | 外側インスタンス参照 | 用途 |
|---|---|---|---|
| static nested | クラス内 | 不可 | 外側と関連するが独立して使う |
| inner | クラス内 (非 static) | 可 | 外側のフィールド使う補助 |
| local | メソッド内 | 可 | そのメソッド内専用 |
| anonymous | その場で new | 可 | 1 回限りのインターフェース実装 |
public class Outer {
private int x = 10;
// 1. static nested
static class StaticNested {
void hi() { System.out.println("static nested"); }
}
// 2. inner
class Inner {
void hi() { System.out.println("inner, x=" + x); } // 外側 x 参照可
}
void method() {
// 3. local
class Local { void hi() { System.out.println("local"); } }
new Local().hi();
// 4. anonymous
Runnable r = new Runnable() {
public void run() { System.out.println("anon"); }
};
r.run();
// モダン Java は Lambda で代替
Runnable r2 = () -> System.out.println("lambda");
}
}
new Outer.StaticNested().hi(); // static は Outer 不要
new Outer().new Inner().hi(); // inner は Outer インスタンス経由
record (Java 14+)
// 不変データクラスを 1 行で
public record User(String name, int age) {}
// 自動生成されるもの:
// - private final フィールド name, age
// - コンストラクタ User(String, int)
// - アクセサ name(), age()
// - equals / hashCode / toString
User u = new User("Alice", 30);
System.out.println(u.name()); // Alice
System.out.println(u); // User[name=Alice, age=30]
// カスタムロジックを追加
public record User(String name, int age) {
public User { // コンパクトコンストラクタ
if (age < 0) throw new IllegalArgumentException();
}
public String greeting() {
return "Hi, " + name;
}
}
sealed (Java 17+)
// permits で継承可能なクラスを限定
public sealed interface Shape
permits Circle, Square, Triangle {}
public record Circle(double r) implements Shape {}
public record Square(double side) implements Shape {}
public record Triangle(double a, double b, double c) implements Shape {}
// switch パターンマッチング (Java 21+) で網羅性チェック
double area(Shape s) {
return switch (s) {
case Circle c -> Math.PI * c.r() * c.r();
case Square sq -> sq.side() * sq.side();
case Triangle t -> 0.5 * t.a() * t.b();
}; // default 不要、コンパイル時に網羅性検証
}
シングルトンパターン
// 1 つしかインスタンス作らせない
public class Config {
private static final Config INSTANCE = new Config();
private Config() { /* 外部から new 禁止 */ }
public static Config getInstance() { return INSTANCE; }
}
Config c = Config.getInstance();
// ★ enum で書くのが最もシンプル
public enum SingletonEnum {
INSTANCE;
public void doWork() { ... }
}
SingletonEnum.INSTANCE.doWork();
JavaBean 規約
- 引数なしの public コンストラクタを持つ
- フィールドは private、getter / setter で公開
- getter は
getXxx()、setter はsetXxx()。boolean はisXxx() Serializableを実装することが多い
多くのフレームワーク (Spring, JPA, Jackson) が JavaBean 規約を前提に動きます。
コンパイルと実行
# 単一ファイル
javac User.java # User.class が生成
java User # main メソッドを実行
# Java 11+ は javac せずに直接実行可能
java User.java
# パッケージ付き
javac -d build src/com/example/User.java
java -cp build com.example.User
FAQ
Q: クラスと interface の使い分けは?
A: 状態を持つなら class、契約 (メソッド一覧) だけならインターフェース。Java 8+ は default メソッドで実装も持てるが、状態 (フィールド) は依然 class のみ。
Q: record と class どちらを使う?
A: 不変データ転送オブジェクト (DTO) は record。状態を変えたり継承したいなら class。
Q: 1 ファイルに複数 public クラスを書ける?
A: 不可。1 ファイル 1 public クラス、ファイル名はクラス名と一致。非 public なら同居可能。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 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
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 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
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?