상속이란 무엇인가
- 하나의 클래스가 다른 클래스의 필드와 메서드를 물려받는 OOP의 개념.
상속의 특징
- 상속을 받는 클래스를 자식(서브) 클래스, 상속을 하는 클래스를 부모(수퍼) 클래스라고 한다.
- 자식 클래스가 extends 키워드를 사용하여 부모로부터 상속을 받는다.
- 자식 클래스가 super 키워드를 사용하여 부모 클래스를 참조할 수 있다.
- 부모 클래스가 sealed 키워드를 사용하여 상속받을 수 있는 클래스를 한정지을 수 있다.
- 자식 클래스가 상속받은 행동(메서드)을 수정할 수 있다. 메서드 오버라이딩이라고 한다. 자식이 부모의 메서드를 반드시 오버라이딩 해야 하는 것은 아니다.
자식 클래스와 부모 클래스의 관계를 형성하는 조건
- 자식과 부모는 “is a kind of”의 관계를 만족해야 한다.
- ✅ Circle은 Shape의 종류 중 하나다.
- ✅ Dog는 Animal의 종류 중 하나다.
- ❌ Engine은 Car의 종류 중 하나가 아니다. (Engine은 Car의 부품이다)
- ❌ Student는 Classroom의 종류 중 하나가 아니다. (Student는 Classroom을 사용한다)
- SOLID의 리스코프 치환 원칙을 만족해야 한다.
- 자식 클래스는 코드의 기능성을 해치지 않고도 부모 클래스로 대체될 수 있어야 한다.
- 자식 클래스는 부모 클래스의 기능을 상속받을 뿐 아니라 사용해야 한다.
- 자식 클래스는 부모 클래스도 대체될 수 있어야 하기 때문이다.