Menu
Coddy logo textTech

"is-a" 관계

Coddy JavaScript 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 56개 중 25번째.

"is-a" 관계는 상속이 언제 적절한지 결정하는 간단한 테스트입니다. 만약 "X는 Y이다"라고 말할 수 있고 그것이 자연스럽게 들린다면, X는 아마도 Y로부터 상속받아야 합니다.

올바름 (상속 사용):

  • "개는 동물이다" → class Dog extends Animal
  • "자동차는 탈것입니다" → class Car extends Vehicle
  • "교과서는 책이다" → class Textbook extends Book

잘못된 예 (상속을 사용하지 마세요):

  • "운전자는 자동차이다 (is a)" → 아니요, 운전자는 자동차를 사용합니다
  • "바퀴는 자동차이다" → 아니요, 바퀴는 자동차의 일부입니다
  • "학생은 교실이다" → 아니요, 학생은 교실 안에 있습니다

예를 들어, 두 개의 객체를 살펴보겠습니다:

// 베이스 클래스 - 이들이 공통적으로 무엇인지 정의합니다
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` 객체를 생성하는 것입니다.

치트 시트

"is-a" 관계는 상속이 언제 적절한지 결정하기 위한 테스트입니다. 만약 "X는 Y이다(is a)"라고 말했을 때 말이 된다면, X는 Y를 상속받아야 합니다.

올바른 예시 (상속 사용):

  • "개는 동물이다" → class Dog extends Animal
  • "자동차는 탈것이다" → class Car extends Vehicle
  • "교과서는 책이다" → class Textbook extends Book

잘못된 예시 (상속 미사용):

  • "운전자는 자동차이다" → 아니요, 운전자는 자동차를 사용합니다.
  • "바퀴는 자동차이다" → 아니요, 바퀴는 자동차의 부품입니다.
  • "학생은 교실이다" → 아니요, 학생은 교실 안에 있습니다.

예시:

// 기본 클래스
class Book {
  constructor(title, author, pages) {
    this.title = title;
    this.author = author;
    this.pages = pages;
  }
  
  read() {
    console.log(`Reading ${this.title} by ${this.author}`);
  }
}

// 소설은 책의 일종입니다 (올바른 상속)
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에서 상속됨

직접 해보기

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실력 점검

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

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