상속(Inheritance)은 객체 지향 프로그래밍의 주요 특성 중 하나로, 하나의 클래스가 다른 클래스의 속성과 메서드를 상속받을 수 있게 해준다. 이러한 상속 메커니즘을 통해 코드의 재사용성이 향상되고, 유지 관리가 쉬워진다.
JavaScript에서 ES6 이후로 class 키워드를 사용하여 클래스를 정의할 수 있으며, extends 키워드를 사용하여 상속을 구현할 수 있다. 상속받은 클래스를 "서브 클래스"(Sub Class) 또는 "하위 클래스"(Child Class)라고 부르고, 상속을 제공하는 클래스를 "슈퍼 클래스"(Super Class) 또는 "부모 클래스"(Parent Class)라고 부른다.
class Parent {
constructor(name) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
class Child extends Parent {
constructor(name, age) {
super(name); // 부모 클래스의 constructor 호출
this.age = age;
}
greet() {
super.greet(); // 부모 클래스의 greet 메서드 호출
console.log(`I am ${this.age} years old.`);
}
}
const child = new Child('John', 10);
child.greet();
// 출력:
// Hello, my name is John.
// I am 10 years old.
상속은 클래스 간에 공통적인 속성이나 메서드를 재사용할 때 매우 유용하며, 코드의 구조를 체계적으로 만들 수 있다.
class Person {
constructor(name, email) {
this.name = name;
this.emial = email;
}
introduce() {
return `Hello my name is ${this.name}`;
}
}
class Client extends Person {
constructor(name, email, phone, address) {
super(name, email)
this.phone = phone;
this.address = address;
}
}
const john = new Client('John', 'john@abc.com', '010-0000-1111', '서울');
console.log(john.introduce();)
// Hello my name is John
부모 클래스에게 상속받아 자식 클래스를 만들고, 자식 클래스에 부모 클래스의 속성을 불러올 때 super()를 사용한다.