JavaScript/class
表示
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
クラスを定義し、name
と age
のプロパティを持つインスタンスを作成しています。また、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 を使用して他のクラスを継承可能
|
関数の継承はプロトタイプチェーンを使用 |