본문 바로가기
Dart/Dart Programming language

[추가학습] Dart에서 상속(Inheritance)과 인터페이스(Interface) 쉽게 알아보기

by Maccrey Coding 2024. 10. 21.
728x90
반응형

 

이번 글에서는 Dart에서 중요한 개념인 상속인터페이스에 대해 쉽게 설명해드릴게요.

이 두 가지는 객체지향 프로그래밍에서 아주 자주 사용되며, 코드를 더 깔끔하고 재사용 가능하게 만들어줘요. 자, 그럼 시작해볼까요?

1. 상속(Inheritance)이란?

상속은 말 그대로 부모로부터 물려받는 것을 말해요. 프로그래밍에서도 비슷한데, 한 클래스가 다른 클래스의 속성과 메서드를 물려받는 것을 상속이라고 해요. 상속을 통해 코드의 재사용을 쉽게 할 수 있죠.

// 부모 클래스 (슈퍼 클래스)
class Animal {
  void breathe() {
    print("I am breathing.");
  }
}

// 자식 클래스 (서브 클래스)
class Dog extends Animal {
  void bark() {
    print("Woof! Woof!");
  }
}

void main() {
  Dog myDog = Dog();
  myDog.breathe(); // 부모 클래스의 메서드를 사용할 수 있음
  myDog.bark();    // 자식 클래스에 있는 메서드
}

위 예시에서 Dog 클래스는 Animal 클래스를 상속받아요.

그래서 Dog 클래스는 Animal 클래스의 breathe() 메서드를 사용할 수 있죠.

그리고 Dog 클래스만의 기능인 bark()도 추가할 수 있어요.

이렇게 상속을 통해 코드를 재사용하고, 필요한 기능만 추가할 수 있어요.

2. 인터페이스(Interface)란?

인터페이스규칙이나 약속 같은 거예요. 인터페이스는 클래스가 어떤 메서드를 가져야 하는지 정해주지만, 구현은 하지 않아요.

인터페이스를 구현(implements)하는 클래스는 그 인터페이스에 있는 모든 메서드를 반드시 구현해야 해요.

// 인터페이스처럼 사용될 추상 클래스
abstract class Vehicle {
  void drive(); // 구현되지 않은 메서드
}

class Car implements Vehicle {
  @override
  void drive() {
    print("Driving a car");
  }
}

class Bike implements Vehicle {
  @override
  void drive() {
    print("Riding a bike");
  }
}

void main() {
  Vehicle myCar = Car();
  Vehicle myBike = Bike();

  myCar.drive();  // "Driving a car"
  myBike.drive(); // "Riding a bike"
}

여기서는 Vehicle이라는 추상 클래스(인터페이스처럼 사용)를 만들었고, Car와 Bike가 이를 구현했어요.

이처럼 여러 클래스가 같은 인터페이스를 구현하면, 다양한 클래스같은 규칙을 따르지만 다른 방식으로 동작할 수 있어요.

3. 상속 vs 인터페이스, 뭐가 다를까요?

  • 상속은 부모 클래스로부터 속성과 메서드를 물려받는 것이에요. 자식 클래스는 부모 클래스의 기능을 그대로 사용할 수 있고, 필요하면 더 추가할 수도 있어요.

  • 인터페이스메서드의 틀만 제공하고, 그 틀을 따르는 클래스가 직접 구현해요. 여러 클래스가 동일한 규칙을 따르되, 구체적인 동작은 다르게 만들 수 있어요.

4. 상속과 인터페이스를 왜 쓸까요?

  • 상속: 코드를 재사용하고, 중복을 줄이기 위해 사용해요.
  • 인터페이스: 클래스가 규칙을 따르게 하여, 여러 클래스가 동일한 패턴으로 동작하게 만들 때 사용해요.

5. 요약

  • 상속: 부모 클래스의 기능을 물려받고 확장하는 것.
  • 인터페이스: 클래스가 따라야 할 메서드 틀을 정의하는 것.

이 두 가지 개념을 잘 활용하면, 코드가 깔끔해지고 재사용성이 높아져요.

Dart에서 객체지향 프로그래밍을 할 때 꼭 알아두면 좋겠죠?

 

구독!! 공감과 댓글,

광고 클릭은 저에게 큰 힘이 됩니다.

 

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

728x90
반응형