es6のクラスの継承方法はいくつありますか?
ES6のクラスの継承方法には、以下のようなものがあります。
- extendsキーワードを使用してクラスを継承することができます。extendsキーワードを使うことで、クラスは別のクラスの属性やメソッドを継承することができます。例えば:
class Parent {
constructor(name) {
this.name = name;
}
sayHello() {
console.log(`Hello, ${this.name}!`);
}
}
class Child extends Parent {
constructor(name, age) {
super(name);
this.age = age;
}
sayAge() {
console.log(`I'm ${this.age} years old.`);
}
}
let child = new Child("Alice", 10);
child.sayHello(); // Output: Hello, Alice!
child.sayAge(); // Output: I'm 10 years old.
- 親クラスのメソッドを呼び出すためにsuperキーワードを使用する:サブクラスでは、親クラスのコンストラクタやメソッドを呼び出すためにsuperキーワードを使用することができます。例えば:
class Parent {
constructor(name) {
this.name = name;
}
sayHello() {
console.log(`Hello, ${this.name}!`);
}
}
class Child extends Parent {
constructor(name, age) {
super(name);
this.age = age;
}
sayHello() {
super.sayHello();
console.log("How are you?");
}
sayAge() {
console.log(`I'm ${this.age} years old.`);
}
}
let child = new Child("Alice", 10);
child.sayHello(); // Output: Hello, Alice! How are you?
child.sayAge(); // Output: I'm 10 years old.
- Object.create()メソッドを使用してプロトタイプチェーンを継承する方法:Object.create()メソッドを使用すると、新しいオブジェクトを作成し、そのプロトタイプを別のオブジェクトに設定できます。例えば:
let parent = {
name: "Alice",
sayHello: function() {
console.log(`Hello, ${this.name}!`);
}
};
let child = Object.create(parent);
child.sayHello(); // Output: Hello, Alice!
- Mixinsを使用して複数のクラスからの継承を行う方法は、複数のオブジェクトの属性やメソッドを1つの新しいオブジェクトに結合することで、多重継承を実現することができます。例えば:
let mixin1 = {
sayHello: function() {
console.log("Hello!");
}
};
let mixin2 = {
sayGoodbye: function() {
console.log("Goodbye!");
}
};
class MyClass {}
Object.assign(MyClass.prototype, mixin1, mixin2);
let obj = new MyClass();
obj.sayHello(); // Output: Hello!
obj.sayGoodbye(); // Output: Goodbye!
ES6クラスの継承方法は単一継承であることに注意する必要があります。つまり、1つのサブクラスは1つの親クラスしか継承できません。複数の継承を実現するには、mixinsの方法を使用することができます。