상속은 기존 클래스에 있는 기능들을 다른 클래스를 만들어 기존 클래스에 있는 기능을 그대로 가져오는 것을 의미한다.
상속의 필요성은 기존 클래스에 있는 기능에서 추가적으로 만들고 싶은 기능이 있다고 가정하자.
기존 클래스에 기능을 추가하는 방법이 있지만 기존 클래스가 내가 만든 코드가 아니라던가 라이브러리라면 업데이트가 되었을때 내가 작업한 부분이 있기 때문에 업데이트를 못하는 상황에 빠질 수 있다.
남이 작성한게 아니라고 하더라도 내가 만들고 싶은 기능이 기존 클래스에서 거의 사용할 일이 없다고 하면 부담스러운 작업일 수 있다.
위 같은 경우에 상속을 사용할 수있다.
또한 다른 언어와 다르게 부모 클래스를 상속받는 것과 다르게 자바스크립트는 부모객체(인스턴스)를 직접 상속 받을 수 있다.
class Person {
// 객체에 해당하는 메서드를 만들때?
constructor(name, first, second) { // 생성자
this.name = name;
this.first = first;
this.second = second;
}
// 한번만 정의됨 : 성능 절약
sum() {
return this.first + this.second;
}
}
class PersonPlus extends Person { // Person 클래스 상속
constructor(name, first, second, third) {
super(name, first, second); // 부모 클래스 요소 초기화
this.third = third;
}
// 부모 클래스의 sum메소드를 사용
sum() {
return super.sum() + this.third;
}
avg() {
return (super.sum() + this.third) / 3;
}
}
let kim = new PersonPlus('kim', 10, 20, 30);
console.log("kim.sum()", kim.sum());
console.log("kim.avg()", kim.avg());
상속이 필요한 이유는 다들 알 것이다. 상속을 잘 쓰냐 못 쓰냐는 객체지향 자체를 잘 쓰냐 못 쓰냐와 같다고 생각된다. 꾸준히 JS의 상속도 익숙해 져야 겠다. (사실 다른언어와 비슷하다..)