[Dart] 상속(Inheritance)

AsherKim·2023년 5월 25일
0

플러터 TIL

목록 보기
7/18

Dart는 객체지향 프로그래밍 언어로, 클래스 계층 구조를 통해 상속을 지원한다. 상속은 클래스 간에 코드 재사용과 계층적 관계를 구성하는 데 사용된다. 하위 클래스(subclass)상위 클래스(superclass)의 특성과 동작을 상속받아 사용할 수 있다.

상속을 받을 클래스와 상위 클래스를 정의한다. 클래스는 class 키워드를 사용하여 정의하며, 상속받을 클래스는 extends 키워드를 사용하여 지정한다. 예를 들어, SubclassSuperclass를 상속받는다면 다음과 같이 정의할 수 있다.

예제코드 🌈

class Superclass {
  // 슈퍼 클래스의 멤버들
}

class Subclass extends Superclass {
  // 서브 클래스의 멤버들
}

서브 클래스는 상위 클래스의 모든 멤버(필드, 메서드)를 상속받는다. 이러한 멤버들은 서브 클래스에서 직접 접근하여 사용할 수 있다. 서브 클래스에서 상위 클래스의 멤버를 재정의하려면 오버라이딩(overriding)을 사용할 수 있다.

예제코드 🌈

class Superclass {
  void printMessage() {
    print('안녕하세요');
  }
}

class Subclass extends Superclass {
  @override
  void printMessage() {
    print('상속받아 오버라이드하였습니다. 안녕하십니까');
  }
}

void main() {
  Subclass subclass = Subclass();
  subclass.printMessage(); // '상속받아 오버라이드하였습니다. 안녕하십니까' 출력
}

서브 클래스의 생성자는 상위 클래스의 생성자를 호출하여 초기화할 수 있다. 이때 super 키워드를 사용 한다.
예를 들어, 상위 클래스 Superclass에 생성자가 정의되어 있다면, 서브 클래스 Subclass에서 super를 이용하여 상위 클래스의 생성자를 호출할 수 있다.

예제코드 🌈

class Superclass {
  String message;

  Superclass(this.message);
}

class Subclass extends Superclass {
  Subclass(String message) : super(message);
}

void main() {
  Subclass subclass = Subclass('안녕!');
  print(subclass.message); // '안녕!' 출력
}

결론

상속을 통해 다른 클래스의 특성을 상속받고, 재정의하며, 확장할 수 있으므로 코드의 재사용성과 유지보수성을 높일 수 있다. 상속을 올바르게 사용하면 클래스 계층 구조를 잘 구성할 수 있다.

profile
추리를 좋아하는 개발자

0개의 댓글