JavaScriptにおけるクラスの基本構文は、オブジェクト指向プログラミング(OOP)を実現するための重要な機能です。ここでは、JavaScriptでクラスを定義するための基本的な構文とその使い方について詳しく解説します。
クラスの定義
JavaScriptでは、classキーワードを使用してクラスを定義します。クラスは、オブジェクトの設計図として機能し、インスタンス化することによって、特定のオブジェクトを作成できます。
javascriptclass クラス名 {
// コンストラクタ
constructor() {
// 初期化処理
}
// メソッド
メソッド名() {
// メソッドの処理
}
}
クラスのインスタンス化
クラスを定義した後、そのクラスを使用してオブジェクト(インスタンス)を作成することができます。インスタンスはnewキーワードを使って作成します。
javascriptlet インスタンス = new クラス名();
コンストラクタ
コンストラクタは、インスタンスが作成される際に自動的に呼ばれる特殊なメソッドです。クラスの中でconstructorメソッドを定義することで、インスタンスを初期化できます。
javascriptclass Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
let person1 = new Person("太郎", 25);
console.log(person1.name); // 太郎
console.log(person1.age); // 25
メソッド
クラス内に定義されたメソッドは、そのクラスのインスタンスで呼び出すことができます。メソッドは関数として定義され、クラス内でthisキーワードを使ってインスタンスのプロパティにアクセスできます。
javascriptclass Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`こんにちは、私は${this.name}です。年齢は${this.age}歳です。`);
}
}
let person1 = new Person("太郎", 25);
person1.greet(); // こんにちは、私は太郎です。年齢は25歳です。
継承
JavaScriptでは、クラスを継承することができます。継承は、あるクラスの機能を別のクラスで再利用したい場合に使います。extendsキーワードを使用して、親クラスを継承します。
javascriptclass Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name}が鳴いています。`);
}
}
class Dog extends Animal {
constructor(name, breed) {
super(name); // 親クラスのコンストラクタを呼び出す
this.breed = breed;
}
bark() {
console.log(`${this.name}が吠えています。`);
}
}
let dog1 = new Dog("ポチ", "柴犬");
dog1.speak(); // ポチが鳴いています。
dog1.bark(); // ポチが吠えています。
プロパティとメソッドのアクセス修飾子
JavaScriptのクラスでは、プロパティやメソッドの可視性を制御するためのアクセス修飾子は標準では提供されていませんが、#記号を使ってプライベートプロパティやプライベートメソッドを定義することができます。
javascriptclass MyClass {
#privateField;
constructor(value) {
this.#privateField = value;
}
getPrivateField() {
return this.#privateField;
}
}
let obj = new MyClass(10);
console.log(obj.getPrivateField()); // 10
// console.log(obj.#privateField); // エラー: プライベートフィールドにアクセスできません
static メソッド
staticキーワードを使うと、クラスのインスタンスを作成しなくてもクラスそのものに関連付けられたメソッドを定義できます。これにより、クラスのインスタンスに依存しない機能を提供することができます。
javascriptclass MathUtils {
static add(a, b) {
return a + b;
}
}
console.log(MathUtils.add(5, 3)); // 8
クラスのプロパティとメソッド
クラス内のプロパティやメソッドは、インスタンス化されたオブジェクトごとに異なる値を持つことができます。また、staticメソッドやプロパティは、インスタンス化しなくてもクラス自体で直接アクセスできます。
javascriptclass Counter {
static count = 0;
constructor() {
Counter.count++;
}
static getCount() {
return Counter.count;
}
}
let counter1 = new Counter();
let counter2 = new Counter();
console.log(Counter.getCount()); // 2
まとめ
JavaScriptのクラスは、オブジェクト指向プログラミングを実現するための強力なツールです。クラスを使うことで、コードの再利用性や保守性を向上させることができます。クラスの基本的な構文や継承、staticメソッド、プライベートフィールドの使い方を理解することで、より効率的なプログラムが書けるようになります。
