JavaScriptのクラスとメソッドについて
本記事では、JavaScriptにおけるクラスとそのメソッドについて、数学的な表現を交えながら詳しく解説します。具体例を多く示し、基礎から応用まで幅広く説明します。
クラスとは?
クラスはオブジェクト指向プログラミングの基本概念であり、オブジェクトを作成するためのテンプレートです。JavaScriptでは、クラスはES6 (ECMAScript 2015) で導入されました。
例えば、次のようにクラスを定義します。
class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`こんにちは、私は${this.name}です。`);
}
}
const person1 = new Person("太郎", 25);
person1.greet(); // 出力: こんにちは、私は太郎です。
上記の例では、Person
クラスが作成され、インスタンスの作成とメソッドの実行が行われています。
コンストラクタメソッド
コンストラクタメソッド (constructor
) は、クラスから新しいインスタンスを作成するときに自動的に呼び出される特殊なメソッドです。
class Circle {
constructor(radius) {
this.radius = radius;
}
}
const circle = new Circle(10);
console.log(circle.radius); // 出力: 10
数学的には、クラスのコンストラクタは関数 \( f(x) \) に対応すると考えられます。例えば、上記の Circle
クラスは以下のように表現できます。
\[ f(r) = r \quad \text{(半径の初期化)} \]
インスタンスメソッド
クラスのメソッドは、クラスのインスタンスで使用できる関数です。インスタンスメソッドは、this
キーワードを使ってインスタンスのプロパティにアクセスできます。
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}
area() {
return this.width * this.height;
}
}
const rect = new Rectangle(5, 10);
console.log(rect.area()); // 出力: 50
数学的には、長方形の面積は次のように計算できます。
\[ \text{area} = \text{width} \times \text{height} \]
静的メソッド
静的メソッドは、クラス自体に属するメソッドであり、インスタンスを作成せずに呼び出せます。static
キーワードを使って定義します。
class MathUtil {
static square(number) {
return number * number;
}
}
console.log(MathUtil.square(4)); // 出力: 16
数学的に表現すると、関数 \( f(x) = x^2 \) に対応します。
\[ f(x) = x^2 \]
ゲッターとセッター
ゲッターとセッターは、プロパティの取得や設定をカスタマイズするためのメソッドです。get
および set
キーワードを使用します。
class Temperature {
constructor(celsius) {
this.celsius = celsius;
}
get fahrenheit() {
return this.celsius * 1.8 + 32;
}
set fahrenheit(value) {
this.celsius = (value - 32) / 1.8;
}
}
const temp = new Temperature(25);
console.log(temp.fahrenheit); // 出力: 77
temp.fahrenheit = 86;
console.log(temp.celsius); // 出力: 30
この例では、摂氏と華氏の変換を行うゲッターとセッターを実装しています。数学的には次のように対応します。
\[ F = C \times 1.8 + 32 \]
\[ C = \frac{F – 32}{1.8} \]
クラスの継承
クラスは他のクラスを継承し、機能を拡張できます。extends
キーワードを使います。
class Animal {
constructor(name) {
this.name = name;
}
speak() {
console.log(`${this.name}が鳴いています。`);
}
}
class Dog extends Animal {
speak() {
console.log(`${this.name}がワンワンと鳴いています。`);
}
}
const dog = new Dog("ポチ");
dog.speak(); // 出力: ポチがワンワンと鳴いています。
このように、継承を使うことでコードの再利用性が向上します。
まとめ
JavaScriptのクラスとそのメソッドは、オブジェクト指向プログラミングを効率的に実現するための重要な機能です。コンストラクタ、インスタンスメソッド、静的メソッド、ゲッターとセッター、継承など、さまざまな機能を活用することで、コードの保守性や可読性が向上します。
ぜひ、実際にコードを書いて学びを深めてください。