[D] 상속과 다형성

[원본 링크]

D에서는 클래스의 상속을 지원한다.
구조체는 상속을 사용할 수 없다.

class 클래스명: 상속받을_클래스
{ ... }

상속받은 서브클래스는 슈퍼클래스의 모든 것을 받는다. image

image 따라서 서브클래스는 슈퍼클래스의 행동을 그대로 수행할 수 있고, 슈퍼클래스의 타입으로 감싸 저장할 수도 있다.

그런데 D에서는 C++과 마찬가지로, 오버라이딩을 수행할 때는 override 키워드를 붙여줘야 한다. 안그러면 클래스 파싱부터 에러를 던진다. image

image

붙이면 이제 잘 된다. image

image 현재 타입과 상관없이 실제 객체의 타입을 추적해 실행한다.


참조
https://dlang.org/spec/function.html#virtual-functions