자바스크립트는 객체 지향 프로그래밍 (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
키워드를 사용하여 인스턴스 변수인 name
과 age
를 초기화합니다.
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
클래스의 메서드를 모두 호출하여 결과를 확인할 수 있습니다.
자바스크립트의 클래스와 상속을 활용하면 코드를 보다 구조화하고 유지보수성을 향상시킬 수 있습니다. 올바른 클래스 및 상속의 사용은 복잡한 프로젝트에서 가독성과 생산성을 높일 수 있습니다.