JavaScriptのクラス入門【オブジェクト指向をわかりやすく】

JavaScriptクラス(class)の使い方を初心者向けに解説。constructor・メソッド・継承(extends)・static・getter・setterをコード例で紹介。中高生向け。無料。

2026年4月16日

JavaScript クラスとは?

JavaScriptの クラス(class) は、同じ構造を持つオブジェクトを効率よく作るための「設計図」です。

たとえば「ユーザー」というクラスを作ると、同じ構造(名前・年齢・メール)を持つユーザーオブジェクトを何個でも作れます。クラスを使わなくてもオブジェクトは作れますが、10人分のユーザーを1つずつ手書きすると、プロパティ名のタイプミスや書き漏れが起きやすくなります。クラスにまとめておけば、newするだけで同じ形のオブジェクトを安全に量産できます。

なお、classという書き方はES2015(ES6)というJavaScriptの仕様で導入されたものです。中身は「関数+プロトタイプ」という以前からの仕組みを分かりやすく書けるようにしたもので、まったく新しい仕組みが追加されたわけではありません。まずは「見た目がシンプルになった書き方」として捉えれば十分です。

クラスの基本的な書き方

class User {
  // コンストラクター:インスタンス作成時に実行される
  constructor(name, age) {
    this.name = name;
    this.age  = age;
  }

  // メソッド
  greet() {
    console.log('こんにちは、' + this.name + 'です!');
  }

  getInfo() {
    return this.name + '(' + this.age + '歳)';
  }
}

// インスタンスを作成
const user1 = new User('田中', 15);
const user2 = new User('鈴木', 14);

user1.greet(); // こんにちは、田中です!
console.log(user2.getInfo()); // 鈴木(14歳)

コードの流れを追ってみましょう。new User('田中', 15)を実行すると、まずconstructorが呼ばれ、this.namethis.ageにそれぞれ'田中'と15が代入されます。この時点でuser1という1つのオブジェクトが完成し、user1.greet()を呼ぶとconstructorで設定された名前を使ってあいさつが表示されます。user2も同じclassから作られていますが、constructorに渡した値が違うため、中身の異なる別のオブジェクトになります。

📖 詳しくはJavaScriptとは?初心者向け解説で解説しています。

継承(extends)

既存のクラスを元に新しいクラスを作ることを 継承(けいしょう) といいます。

class Animal {
  constructor(name) {
    this.name = name;
  }
  speak() {
    console.log(this.name + 'が鳴きます');
  }
}

// Animalを継承したDogクラス
class Dog extends Animal {
  speak() {
    console.log(this.name + ':ワン!');
  }
}

const dog = new Dog('ポチ');
dog.speak(); // ポチ:ワン!

共通の処理は親クラス(Animal)に、固有の処理は子クラス(Dog)に書きます。上の例ではDogがconstructorを書いていないので、Animalのconstructorがそのまま使われています。もしDog独自のプロパティ(犬種など)を追加したい場合は、Dogにもconstructorを書き、super(name)で親クラスのconstructorを先に呼び出す必要があります。super()を書き忘れると、thisを使う前にエラーになるので注意しましょう。

同じ構造のオブジェクトを複数作る場合や、状態と振る舞いをまとめたい場合にクラスを使うと便利です。1〜2個しか作らないなら、普通のオブジェクトリテラルで十分です。

👉 配列入門も参考にしてください。

staticメソッド

static をつけたメソッドは、インスタンスを作らずにクラスから直接呼び出せます。

class MathHelper {
  static add(a, b) { return a + b; }
  static multiply(a, b) { return a * b; }
}

console.log(MathHelper.add(3, 5));      // 8
console.log(MathHelper.multiply(3, 5)); // 15

getterとsetter

getter(ゲッター)setter(セッター) を使うと、メソッドをまるで普通のプロパティのように呼び出せます。値を取得するときの処理や、設定するときのチェックをこっそり挟みたいときに便利です。

class Temperature {
  constructor(celsius) {
    this._celsius = celsius;
  }

  // getter:プロパティのように値を取得できる
  get fahrenheit() {
    return this._celsius * 9 / 5 + 32;
  }

  // setter:プロパティのように値を設定できる
  set fahrenheit(f) {
    this._celsius = (f - 32) * 5 / 9;
  }
}

const temp = new Temperature(20);
console.log(temp.fahrenheit); // 68(()をつけずに呼べる)

temp.fahrenheit = 86;
console.log(temp._celsius); // 30

ポイントは、fahrenheit を呼ぶときに temp.fahrenheit() のように丸かっこをつけない点です。get をつけたメソッドは「プロパティを読み取る」形で、set をつけたメソッドは「プロパティに代入する」形で呼び出されます。裏側では計算やチェックが行われていても、使う側からは普通のプロパティに見えるのがgetter/setterのメリットです。

クラスを使う場面

クラスはどんなときに使うのでしょうか。具体的な場面を紹介します。

場面1:同じ構造のデータを複数作るとき

たとえば「生徒」のデータを10人分作りたいとき、毎回オブジェクトを手書きするのは大変です。Studentクラスを作っておけば、new Student("太郎", 15)のように簡単に生徒オブジェクトを量産できます。

場面2:データと処理をセットにしたいとき

「生徒」には名前や年齢というデータと、「自己紹介する」「テストの点数を記録する」という処理があります。クラスを使えば、データ(プロパティ)と処理(メソッド)を1つにまとめられます。

場面3:ゲームのキャラクターを管理するとき

ゲームでは敵キャラクターや味方キャラクターをクラスで定義することが多いです。HP、攻撃力、防御力などのプロパティと、攻撃する、回復するなどのメソッドをまとめます。

クラスを使う前に、オブジェクトの基本を理解しておくとスムーズです。「JavaScriptオブジェクト入門」でプロパティやメソッドの基本を確認しておきましょう。

クラスの構成要素

クラスには主に3つの構成要素があります。

コンストラクタ(constructor)

クラスからオブジェクトを作るとき(new するとき)に自動で実行される特別なメソッドです。プロパティの初期値を設定するために使います。引数で受け取った値をthis.プロパティ名に代入します。

プロパティ

オブジェクトが持つデータです。this.nameやthis.ageのように、thisをつけて定義します。各オブジェクトが独自の値を持ちます。

メソッド

オブジェクトが持つ関数です。クラスの中に関数を書くだけで定義できます。functionキーワードは不要です。メソッドの中ではthisを使って、そのオブジェクト自身のプロパティにアクセスできます。

関数の基本を復習したい人は「JavaScript関数入門」を読んでみてください。

クラスでよくあるミス

ミス1:newを忘れる

クラスからオブジェクトを作るときは、必ずnewをつけます。newを忘れるとエラーになります。

ミス2:thisを忘れる

コンストラクタやメソッドの中でプロパティにアクセスするとき、thisを忘れると別の変数として扱われます。「this.name」と書くべきところを「name」だけにすると、プロパティに値が入りません。

ミス3:メソッドにfunctionをつける

クラスの中でメソッドを定義するとき、functionキーワードは不要です。「greet() { ... }」のように、メソッド名と丸かっこだけで書きます。

ミス4:コンストラクタを複数書く

1つのクラスにコンストラクタは1つだけです。2つ書くとエラーになります。

クラスは最初は難しく感じるかもしれません。でも「同じ構造のオブジェクトを簡単に作るための設計図」と考えれば、シンプルです。まずは簡単なクラス(名前と年齢だけ持つPersonクラスなど)から作ってみましょう。

力試し:出力を予想してみよう

ここまでの内容を使って、次のコードの出力を予想してみましょう。

class Circle {
  constructor(radius) {
    this.radius = radius;
  }

  // getter:面積を計算して返す
  get area() {
    return Math.floor(this.radius * this.radius * 3.14);
  }
}

const c = new Circle(10);
console.log(c.area);

半径10の円なので、面積は「半径 × 半径 × 3.14」で計算されます。10 × 10 × 3.14 = 314 となり、Math.floorで小数点以下を切り捨てても314のままなので、出力は 314 です。areaはgetterなので、c.area()ではなくc.areaだけで呼び出せる点も確認しておきましょう。

まとめ

  • class:オブジェクトの設計図
  • constructor:インスタンス作成時に実行される初期化処理
  • extends:既存クラスを継承して新しいクラスを作る
  • static:インスタンスなしで呼び出せるメソッド
  • get / set:メソッドをプロパティのように呼び出せる

クラスを使いこなせるようになると、Player・Enemy・Itemのように役割ごとにコードをまとめられ、大規模なプログラムも整理しやすくなります。React・Vue・Angularなどのフレームワークでもクラスの考え方が使われているので、今のうちに基本を押さえておくと将来スムーズです。レッスンでさらに実践的な使い方を学んでみましょう。

🚀 JavaScriptをレッスンで学ぼう!

このサイトのJavaScriptコースでは、クラスを使った実践的なプログラムをブラウザだけで学べます。無料・登録不要です。

JavaScriptコースを見る →
目次

コースで実際に手を動かして学ぼう

レッスンではコードを書きながら基礎が身につきます

HTMLコースを始める →

この記事に出てくる用語

📣 この記事が役に立ったら

Xでシェア

💬 引用する場合はこちらをご利用ください:

JavaScriptクラス(class)の使い方を初心者向けに解説。constructor・メソッド・継承(extends)・static・getter・setterをコード例で紹介。中高生向け。無料。

出典: https://start-web-programming.com/blog/javascript-class/