コンテンツにスキップ

JavaScript/class

出典: フリー教科書『ウィキブックス(Wikibooks)』


class

[編集]

class は、JavaScript におけるオブジェクト指向プログラミングのための構文です。クラスはオブジェクトを作成するためのテンプレートであり、プロパティやメソッドを定義することができます。ES6(ECMAScript 2015)で導入され、従来のプロトタイプベースの継承よりも簡潔にオブジェクト指向を表現できます。

構文

[編集]
class MyClass {
  constructor(name) {
    this.name = name;
  }

  greet() {
    console.log(`Hello, ${this.name}!`);
  }
}

説明

[編集]
  • class は、オブジェクトのプロパティやメソッドを定義するためのテンプレートです。
  • クラスは、インスタンス化することでオブジェクトを作成できます。
  • constructor メソッドは、クラスのインスタンスを作成する際に呼び出され、オブジェクトの初期化を行います。
  • クラス内で定義されたメソッドは、そのクラスのインスタンスからアクセスできます。

使用例

[編集]
// クラスの定義
class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  greet() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

// クラスのインスタンスを作成
const person1 = new Person('Alice', 30);
person1.greet(); // "Hello, my name is Alice and I am 30 years old."

const person2 = new Person('Bob', 25);
person2.greet(); // "Hello, my name is Bob and I am 25 years old."

この例では、Person クラスを定義し、nameage のプロパティを持つインスタンスを作成しています。また、greet メソッドを使用して、インスタンスの情報を表示しています。

継承

[編集]

クラスは他のクラスを継承して、新しいクラスを作成することができます。継承を使用することで、共通の機能を親クラスから子クラスに引き継ぐことができます。

// 継承の例
class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(`${this.name} makes a sound.`);
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name); // 親クラスのコンストラクタを呼び出し
    this.breed = breed;
  }

  speak() {
    console.log(`${this.name} barks.`);
  }
}

const dog = new Dog('Rex', 'Golden Retriever');
dog.speak(); // "Rex barks."

この例では、Dog クラスが Animal クラスを継承しており、speak メソッドをオーバーライドしています。super キーワードを使って、親クラスのコンストラクタを呼び出しています。

注意点

[編集]
  • クラス内で定義されたメソッドは、インスタンスを通じて呼び出されます。クラス自体では直接呼び出すことはできません。
  • クラス名は通常、PascalCase(最初の文字が大文字)で記述します。
  • クラスのメソッド内で this を使用すると、そのクラスのインスタンスを指します。

クラスと関数の違い

[編集]
特徴 class 関数
定義 class キーワードを使って定義 function キーワードを使って定義
インスタンス化 new キーワードを使ってインスタンス化 呼び出し時に即実行
継承 extends を使用して他のクラスを継承可能 関数の継承はプロトタイプチェーンを使用

関連項目

[編集]

参考

[編集]