[Dart] 상속과 추상클래스

[원본 링크]

dart에서 상속 키워드는 extends다.

아래는 부모 클래스 Parent를 상속받는 간단한 코드다. image

image

오버라이딩할 수도 있다. image

image

오버라이딩 여부를 확실하게 체크하고싶다면 메서드 앞에 @override 어노테이션을 붙이는게 좋다. image

image


추상클래스
dart에는 인터페이스가 없고 추상클래스만 있다. 추상클래스는 메서드를 구현하지 않고 자식에게 미뤄버릴 수 있는 클래스다. image

image

그리고 상속 시스템이 좀 기묘하다.
추상 클래스나 클래스를 가리지 않고 전부 extends로 상속할 수 있다.

implements로는 멤버변수가 없는 클래스/추상클래스만 상속받을 수 있다. 멤버변수가 있는 클래스/추상클래스를 implements로 상속하면 에러를 던진다.

신비한 점은 멤버변수가 없으면서 메서드가 구현된 일반 클래스도 implements로 상속할 수가 있다는 것이다...
다만 실제로 상속받을때는 메서드 구현부를 강제로 잘라서 정말 인터페이스로 만든다. 그래서 implements로 상속받은 자식 클래스에서 super로 메서드에 접근하는 것은 불가능하다.