"is-a" 관계
Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 56개 중 25번째.
"~이다" 관계는 상속이 적절한 경우를 판단하는 간단한 기준입니다. "X는 Y이다"라고 말했을 때 자연스럽게 들린다면, X는 아마 Y를 상속해야 합니다.
올바름 (상속 사용):
- "개는 동물이다" →
class Dog extends Animal
- "자동차는 차량이다" →
class Car extends Vehicle
- "교과서는 책이다" →
class Textbook extends Book
잘못된 예(상속을 사용하지 마세요):
- "A Driver is a Car" → 아니요, 운전자는 자동차를 사용합니다
- "바퀴는 자동차이다" → 아니요, 바퀴는 자동차의 일부입니다
- "학생은 교실이다" → 아니요, 학생은 교실 안에 있습니다
예를 들어, 객체 두 개를 살펴보겠습니다.
// 기본 클래스 - 이들이 모두 본질적으로 무엇인지
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 컴파일러