[Dart] 추상 클래스와 인터페이스

Sin_B·2023년 5월 25일
1

Dart

목록 보기
5/14

이번에는 추상 클래스(Abstract class)와 인터페이스(Interface)를 정리해보고자 합니다.
아직도 Class가 뭔지 모르겠다면 아래 링크를 참고해주세요.


Class가 뭔지 모르겠다면?


🔍 추상 클래스(Abstract Class)란?

추상 클래스(Abstract Class)는 다른 클래스들에게 공통된 속성과 메서드를 제공하는 클래스입니다. 상속의 재료로 사용되는 클래스를 만들 때 사용하는데, 인스턴스(instance)를 생성할 수 없고, 메서드 또한 선언만 할뿐 실제 구현은 하지 않습니다. (상속이란?)

이렇게 구현을 하는 이유는 상속을 통해 다양한 하위 클래스(자식 클래스)들에게 공통된 동작을 제공하고, 클래스의 계층 구조를 설계하기 위해서입니다.

추상 클래스는 상속된 하위 클래스에서 구체적인 동작을 하는 추상 메서드를 구현해야 합니다. 추상 클래스를 상속받는 모든 하위 클래스가 공통된 동작을 구현함으로써 코드의 일관성을 유지할 수 있습니다.
하위 클래스에서 구체적인 동작을 정의함으로써, Dart(객체 지향 프로그래밍)에서 다형성과 상속을 효과적으로 활용해 클래스의 계층 구조를 설계할 수 있습니다. 이를 통해 여러 종류의 객체하나의 추상 클래스 타입으로 다룰 수 있고, 코드의 유연성과 재사용성을 높여줍니다.


Dart 코드에서의 추상 클래스 구현은 다음과 같이 이루어집니다.추상 클래스를 선언하기 위해서 class 앞에 abstract 키워드를 붙여줍니다. 추상 클래스는 일반적으로 추상 메서드(Abstract method)를 포함하며, 이는 내용이 없는 메서드입니다. 추상 메서드는 선언만 있고, 실제 구현은 하위 클래스에서 이루어집니다. 위 코드을 살펴보면, Animal이라는 추상 클래스를 getter와 setter 메서드를 사용해 정의하고, 하위 클래스 Dog가 상속받아 getter/setter 메서드를 구현하고 있습니다.

예시로 든 gettet와 setter 메서드만 사용할 수 있는게 아니라 일반적인 인스턴스 변수를 선언해서 필드를 정의할 수도 있습니다. 이 정의된 필드(속성)를 통해 추상 클래스는 각각의 하위 클래스에서 독립적인 동작을 제공할 수 있습니다.


⭐ 인터페이스(Interface)란?

인터페이스(Interface)클래스가 필수적으로 구현해야 하는 메서드의 일종입니다. 일종의 규칙이나 약속에 비유하면 이해하기 쉽겠습니다.

예를 들어, 동물에 대한 인터페이스 Animal을 생각해보겠습니다. 이 인터페이스 내부에는 동물이 반드시 해야하는 행동인 소리내기를 정의할 수 있습니다. 인터페이스를 구현하는 클래스는 인터페이스 내부에 있는 소리내기반드시 구현해야 합니다. 구현한 클래스 내부에서는 동물의 종류(클래스의 이름)에 따라 울음소리가 달라지기도 하겠습니다.

인터페이스는 선언할 때, class 앞에 abstract interface키워드를 붙여줍니다. 인터페이스도 추상 클래스와 같이 메서드를 선언만 하고, 실제 구현은 하지 않습니다.

요약하자면, 인터페이스는 클래스 간의 약속이라고 생각할 수 있습니다. 클래스는 해당 인터페이스의 약속된 행동을 구현해야 하며, 이를 통해 코드의 일관성재사용성을 높일 수 있습니다.


🌠 포스팅을 마치며

추상 클래스와 인터페이스의 차이를 잘 알지 못했는데, 전체적인 정리를 하면서 인터페이스 내부에서는 필드를 선언하지 못하기에 메서드인 getter를 사용해서 대신한다는 것을 알게 되었습니다.

학교 다닐 때는 구글링하면서 블로그 보고 공부했었는데, 요새는 Chat gpt가 더 잘 알려줘서 구글링을 잘 안하는 것 같습니다. 인공지능의 한계란 어디까지인가..

gpt한테 공식 문서 ~~관련 내용 링크 주라고 하면 줍니다. 아주 편리합니다! 짱👍


profile
| App Developer | 제가 한 개발을 읽는 사람이 이해하기 쉽게 쓰려고 노력합니다.

0개의 댓글