Menu
CoddyTech

"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에서 상속됨
challenge icon

챌린지

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"가 출력되어야 합니다
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 JavaScript 컴파일러