(理解されることは幸運ですが、理解されないことは必ずしも不幸ではありません。他人の理解に自分の価値を全面的に置く人は、多くの場合無価値です。 -周国平)
伸びる
実装する
implements は、クラスがインターフェイスを実装するために使用するキーワードです。インターフェイスを実装するには、インターフェイス内のすべてのメソッドを実装する必要があります。
たとえば、次のコードは抽象クラス AbstractAnimal を定義し、Dog と Cat はそれぞれ AbstractAnimal を実装し、Mouse は AbstractAnimal を継承し、Pig は AbstractAnimal を継承して Dog と Cat を実装します。
abstract class AbstractAnimal {
nickname = '动物';
getData () {
console.log('AbstractAnimal');
};
static staticNickname = '静态动物';
static staticGetData () {
console.log('staticGetData');
}
}
class Dog implements AbstractAnimal {
nickname: string;
getData () {
console.log('dog');
}
}
class Cat implements AbstractAnimal {
nickname: string;
getData () {
console.log('cat');
}
getSelfData () {
console.log('get cat data');
}
}
class Mouse extends AbstractAnimal {
}
class Pig extends AbstractAnimal implements Dog, Cat {
getSelfData (): void {
throw new Error("Method not implemented.");
}
}
複数の実装のインターフェイス インターフェイスを定義することもできます
interface IAnimal {
nickname: string;
getData ();
}
class Dog implements IAnimal {
nickname: string;
getData () {
console.log('dog');
}
}
class Cat implements IAnimal {
nickname: string;
getData () {
console.log('cat');
}
}
拡張と実装の違い
- extends は継承クラス、implements は実装インターフェイスです。
- クラスは 1 つだけ継承でき、インターフェイスは複数のメソッドを実装できます。
- extends が親クラスを継承する場合、親クラスのメソッドを書き換えたり、親クラスの非プライベート メソッドを呼び出すことができます。implements はインターフェイスを実装し、インターフェイスのすべてのメソッドを実装する必要があります。
- Extends の後にクラスが続き、継承関係を示します。
- 実装の後にインターフェイスが続きます。これは、インターフェイスを実装することを意味します (複数の場合があります)。
- 継承とは、親クラスのメソッドを継承すると理解でき、親クラスのメソッドをサブクラスで使用できます。
- インターフェースの実装とは、インターフェースにメソッドを定義することです。このメソッドは自分で実装する必要があります。インターフェースは、ビジネスインターフェースの仕様を統一するための標準とみなすことができます。
インターフェースとインプリメントの違い
- 抽象クラスはメンバー メソッドの実装の詳細を提供できますが、インターフェイスにはパブリック抽象 (暗黙的に宣言された) メソッドのみが存在できます。
- 抽象クラスのメンバー変数とメソッドは実装コードを作成できますが、インターフェイスのメンバーは変数とメソッドを宣言することしかできません。
- インターフェイスには静的コード ブロックと静的メソッドを含めることはできませんが、抽象クラスには静的コード ブロックと静的メソッドを含めることができます。
- クラスは 1 つの抽象クラスのみを継承できますが、クラスは複数のインターフェイスを実装できます。