"is-a" 関係
CoddyのJavaScriptジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 25/56。
「is-a」関係は、継承が適切かどうかを判断するための簡単なテストです。「X is a Y」と言って自然に聞こえるなら、XはおそらくYを継承すべきです。
正しい(継承を使用):
- 「犬は動物である」→
class Dog extends Animal
- 「車は乗り物である」 →
class Car extends Vehicle
- 「教科書は本である」 →
class Textbook extends Book
不適切(継承を使わない):
- 「ドライバーは車である」→ いいえ、ドライバーは車を使います
- 「車輪は車である」→ いいえ、車輪は車の一部です
- 「学生は教室である」→ いいえ、学生は教室の中にいます
たとえば、2つのオブジェクトについて考えてみましょう。
// 基底クラス - これらすべての本質
class Book {
constructor(title, author, pages) {
this.title = title;
this.author = author;
this.pages = pages;
}
read() {
console.log(`Reading ${this.title} by ${this.author}`);
}
}
// Novel は Book の一種(正しい継承関係)
class Novel extends Book {
constructor(title, author, pages, genre) {
super(title, author, pages);
this.genre = genre;
}
}
// クラスを使用する
const fiction = new Novel("1984", "George Orwell", 328, "Dystopian");
fiction.read(); // "Reading 1984 by George Orwell" - Bookから継承
チャレンジ
ElectronicDeviceクラスとSmartphoneクラスが与えられています。Smartphoneは、追加機能を備えたElectronicDeviceの一種です。ブランドが "Samsung"、モデルが “Galaxy S23” の`myPhone`オブジェクトを作成してください。
自分で試してみよう
import { ElectronicDevice } from './electronicDevice.js';
import { Smartphone } from './smartphone.js';
// TODO: ブランドが "Samsung"、モデルが “Galaxy S23” の `myPhone` オブジェクトを作成してください。
// テストコード - 変更しないでください
console.log(myPhone.turnOn()); // "Samsung Galaxy S23 is now ON" と出力されるはずですこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
オブジェクト指向プログラミングのすべてのレッスン
自分で練習してみよう: JavaScriptオンラインコンパイラ