자바스크립트 클래스 및 상속

자바스크립트는 객체 지향 프로그래밍 (OOP)을 지원하는 언어로, 클래스 및 상속 개념을 사용하여 코드를 구성할 수 있습니다. 이를 통해 코드의 구조화와 재사용성을 높일 수 있으며, 유지보수와 확장에도 용이합니다.

클래스 선언과 인스턴스 생성

자바스크립트에서 클래스를 선언하려면 class 키워드를 사용합니다. 클래스의 이름은 대문자로 시작하는 것이 관례입니다. 아래는 Person 클래스를 예시로 보여드리겠습니다.

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`안녕하세요, 제 이름은 ${this.name}입니다.`);
  }
}

// 인스턴스 생성
const person1 = new Person('John', 25);
console.log(person1.name); // 출력: John
person1.sayHello(); // 출력: 안녕하세요, 제 이름은 John입니다.

class 키워드를 사용하여 Person 클래스를 선언합니다. constructor 메서드는 클래스의 생성자로, 인스턴스가 생성될 때 실행되는 코드를 포함합니다. this 키워드를 사용하여 인스턴스 변수인 nameage를 초기화합니다.

Person 클래스에는 sayHello 메서드도 포함되어 있습니다. 이 메서드는 해당 인스턴스의 name 속성을 사용하여 인사말을 출력합니다. person1 인스턴스를 생성하고, sayHello 메서드를 호출하여 결과를 확인할 수 있습니다.

클래스 상속

자바스크립트에서는 클래스 상속을 통해 기존 클래스를 확장할 수 있습니다. 클래스 상속을 사용하면 기존 클래스의 속성과 메서드를 재사용하고, 새로운 기능을 추가할 수 있습니다. 아래 예제는 Student 클래스가 Person 클래스를 상속하는 경우를 보여줍니다.

class Student extends Person {
  constructor(name, age, grade) {
    super(name, age);
    this.grade = grade;
  }

  study() {
    console.log(`${this.name} 학생이 열심히 공부하고 있습니다.`);
  }
}

// 인스턴스 생성
const student1 = new Student('Emily', 18, 12);
console.log(student1.name); // 출력: Emily
console.log(student1.grade); // 출력: 12
student1.sayHello(); // 출력: 안녕하세요, 제 이름은 Emily입니다.
student1.study(); // 출력: Emily 학생이 열심히 공부하고 있습니다.

extends 키워드를 사용하여 Person 클래스를 상속받는 Student 클래스를 선언합니다. super 키워드를 사용하여 부모 클래스인 Person의 생성자를 호출하고, 필요한 추가 속성인 grade를 초기화합니다.

Student 클래스에는 부모 클래스에서 상속받은 sayHello 메서드 외에도 study 메서드가 추가되어 있습니다. student1 인스턴스를 생성하고, 부모 클래스인 Person의 메서드와 Student 클래스의 메서드를 모두 호출하여 결과를 확인할 수 있습니다.

자바스크립트의 클래스와 상속을 활용하면 코드를 보다 구조화하고 유지보수성을 향상시킬 수 있습니다. 올바른 클래스 및 상속의 사용은 복잡한 프로젝트에서 가독성과 생산성을 높일 수 있습니다.