상속은 두가지 방법이 존재한다.
바로 extends와 super()가 있다.
extends
를 알기 전에 class의 개념을 알아야 한다.
먼저 extends
란 클래스의 자식 클래스를 생성할 때 사용한다.
//부모 클래스 생성
class 부모{
}
//부모 클래스 상속
class 자식 extends 부모{
}
super()
는 두가지 의미로 해석된다.
1. 자식 클래스 내에서 부모 클래스의 생성자 역할을 한다.
2. 자식 클래스에서 부모 클래스의 메소드 접근역할을 한다.
쉽게 설명하면
자식 클래스를 생성할 경우, 부모 클래스가 먼저 생성된 후 자식 클래스가 생성된다.
class
의 생성자(constructor)
에서는 super()
키워드 하나만 사용되고
생성자(constructor)
내에서 this
키워드가 나오기 전에 사용되어야 한다.
상속된 자식 클래스에 요소 추가 시 새로 추가되는 parameter를 정의하려면
기존 부모 클래스와, 생성자를 다시 정의해 주어야 한다.
이 과정에서 생기는 중복되는 코드가 발생해
error발생 확률 증가, 메모리 낭비 등 매우 비효율적인 낭비가 생긴다.
이러한 부분을 super()
로 해결할 수 있다.