목차
1. 상속 - Subclassing(서브클래싱)
2. 상속 - Overriding(오버라이딩)
3. 예시로 살펴보자
- Subclassing(서브클래싱) - 슈퍼클래스의 속성들을 그대로 서브 클래스에 이어받는 것
- Super class(슈퍼클래스) - 상속해주는 클래스, 부모 클래스라고도 얘기한다.
- Sub class(서브클래스) - 상속받는 클래스, 자식클래스라고도 얘기한다.
📌 공통기능을 묶어서 슈퍼클래스로 만들고 이 기능들을 상속해서 서브클래스를 쉽게 만들 수 있다.
📌 서브 클래스에서 슈퍼 클래스의 인스턴스를 지칭하고 싶을 경우 "super" 키워드를 쓰면 된다.
📌 상속은 구조체와 클래스를 구별하는 대표적 차이점이다.
⬇️ 코드 예시
//슈퍼클래스
class NoteBook {
...
}
슈퍼클래스(부모) NoteBook을 상속받는 서브클래스(자식)인 MacBook을 선언하고 싶다면 아래와 같이 선언하면 된다.
//서브클래스
class MacBook: NoteBook {
...
}
- Overriding(오버라이딩) : 슈퍼 클래스(부모)의 펑션을 그대로 상속 받지 않고 재정의하는 것
📌 슈퍼 클래스의 펑션을 오버라이딩 하고 싶을 때는 override 키워드를 펑션 앞에 붙인다.
✅ 슈퍼 클래스 - NoteBook
✅ 서브 클래스 - MacBook
1. 슈퍼클래스인 NoteBook의 update 펑션을 그대로 상속받지 않고 재정의 해서 사용하기 위해 override 키워드를 써서 오버라이딩하였다.
2. super는 슈퍼 클래스의 인스턴스를 지칭하므로 슈퍼클래스의 update를 호출하겠다는 뜻이다.
✅ MacBook 인스턴스 생성
1. 생성자 호출을 통해 macBook 인스턴스를 생성하였다.
2. 이후 프로퍼티 name을 초기화하고 슈퍼클래스의 펑션을 상속받은 update 펑션을 호출했다.
⬇️ 출력 결과
update 함수에서 오버라이딩한 결과가 출력되었다.