コース一覧
    Java入門:クラスとオブジェクト
    クラスを定義する

    Java入門:クラスとオブジェクト

    クラスとオブジェクトの設計を学び、状態と振る舞いを持つJavaプログラムを組み立てられるようにします。

    1
    クラスとオブジェクト
    01. クラスを定義する5分
    02. クラスにフィールドを持たせる12分
    03. クラスにメソッドを定義する5分
    04. インスタンスを作る5分
    05. コンストラクタ5分
    06. this キーワード5分
    07. カプセル化 (private と getter)12分
    08. Person クラスを作る5分
    09. Product クラスで税込価格15分
    10. 銀行口座クラス15分
    11. toString のオーバーライド5分
    12. クラスとオブジェクト クイズ5分
    13. Java 入門 最終クイズ5分

    クラスを定義する

    チケット 1 枚を表すのに、座席番号の String、値段の int、使用済みかどうかの boolean と、変数が 3 つ要ります。3 枚扱うなら 9 個です。メソッドに渡すときも 3 つ並べて渡すことになり、順番を 1 つ入れ替えただけで、エラーも出ないまま壊れます。ここまで使ってきた int や String では、チケットというひとまとまりを表せません。

    無い型は、自分で作れる

    Java の答えは、型そのものを増やすことです。class は、新しい型をこの世に 1 つ増やすための宣言です。

    Java

    public class Ticket {
    }

    中身は空でも、これで Ticket という型が使えるようになります。左から読むと、public はどこからでも使ってよいという印、class はこれが型の定義だという合図、Ticket が新しい型の名前、{ } がその中身を入れる場所です。

    型の名前は大文字で始めて、単語の区切りも大文字にします。Ticket UserProfile ShoppingCart のような書き方です。変数名やメソッド名は小文字で始めるので、見た瞬間にどちらなのかが分かる、という約束になっています。

    名前には動詞ではなく名詞を選びます。クラスが表すのは、することではなく、ものだからです。

    作った型は、int と同じように使える

    型を 1 つ増やすと、その名前がそのまま変数の型として使えるようになります。

    Java

    int n = 3;
    String s = "hello";
    Ticket t = new Ticket();

    3 行目が今回の山場です。左側の Ticket は変数の型、右側の new Ticket() は、その設計図から実体を 1 つ作れという命令です。int のように書いただけで値が生まれる型と違って、自分で作った型は new を書かないと中身が生まれません。

    設計図は 1 枚しかありませんが、new を書いた回数だけ実体が生まれます。1 つのたい焼き型から何個でもたい焼きが焼けるのと同じ関係です。

    コンパイラが見ている 2 つの決まり

    書き方の好みではなく、守らないと止まる決まりが 2 つあります。

    • public class Ticket と書いたファイルは、ファイル名を Ticket.java にする。ずれていると class Ticket is public, should be declared in a file named Ticket.java で止まります
    • 1 つのファイルに public class は 1 つだけ。2 つめを書くと同じくコンパイルエラーになります

    public を付けなければ同じファイルに何個でも書けるので、練習では 1 つのファイルに型を並べて構いません。

    Java

    public class ticket { }  // 通るが、Java では読み手を混乱させる書き方
    public Ticket { }        // class の書き忘れ。class, interface, enum, or record expected

    やってみよう

    createBook() は、Book という型を自分で定義し、その実体を 1 つ作って、クラス名の文字列を返すメソッドです。

    • Solution の中に、Book という名前の型を static class として 1 つ定義します。中身は空で構いません
    • 実体からクラス名を取り出すには getClass().getSimpleName() を使います
    • 文字列を直接 return しても表示上はテストが通りますが、それでは型を 1 つも作っていません。必ず自分で定義した型から実体を作って、そこから名前を取ってください

    要件

    1. Solution の中に Book クラスを定義すること (本文の static class Book { } で十分)
    2. createBook() の中で new Book() を使ってインスタンスを作ること
    3. 戻り値はそのインスタンスのクラス名 "Book" という文字列にすること

    ヒント

    Solution の中に `static class Book { }` を書くと、テスト用の Book クラスを同じファイル内に置けます

    `new Book()` で実体を 1 つ作り、`b.getClass().getSimpleName()` でそのクラス名を文字列として取得できます

    クラス名は `PascalCase` の慣習なので、`book` ではなく `Book` のように先頭を大文字で書きましょう

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/05/19·更新 2026/08/26

    関連レッスン

    • クラスにフィールドを持たせる

      クラスにフィールドを持たせて、オブジェクトが「データ」を抱えられるようにする方法を学びます。

    • クラスにメソッドを定義する

      クラスに振る舞いを持たせるインスタンスメソッドの定義方法と、static メソッドとの違いを学ぼう。

    • インスタンスを作る

      クラスから実体 (インスタンス) を作る方法と new 演算子の使い方を学ぼう。

    • コンストラクタ

      オブジェクトを生まれた瞬間に初期化する仕組み、コンストラクタを学ぼう。new でクラスを呼び出すときに何が起きているのかを追いかけながら、Book クラスを組み立てて本のフルタイトルを返すメソッドを完成させる。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 変数データに名前をつけて参照する仕組み
    • メソッドクラスに属する関数
    • クラスデータと振る舞いを束ねる単位
    • 設計何をどう作るかを決める前工程
    • コンパイルソースをバイトコードへ変換する処理
    • テストバグを見つける工程
    • インスタンスクラスから生成された実体
    • 戻り値呼び出し元への返答を表す点線矢印
    main.java
    エディタを読み込んでいます

    メモ

    クラスを定義する

    ⌘S で保存