다트에서도 물론 인터페이스가 존재하며 자바와 마찬가지로 클래스 옆에 implements를 붙여서 사용합니다.
다트에서 인터페이스 사용하기
자바든 코틀린이든 인터페이스는 생각보다 중요하며 이 또한 재사용성 및 유지보수 시에 좋습니다.
먼저 인터페이스 클래스를 만들어 줍니다.
abstract class Sample {
String name;
Sample(this.name);
void sayName() {}
void sample() {
print('test');
}
}
인터페이스 클래스는 제대로 완성되지 않은 클래스라고 봐도 됩니다. 인터페이스를 통해 클래스를 완성하는 거니깐요
추상 클래스는 class 옆에 abstract를 붙여서 만들어 줍니다. 이렇게 함으로써 바로 인터페이스 클래스를 호출하거나 생성할 수 없으며 초기화 또한 하지 못합니다.
인터페이스 안에 메소드도 완성되지 않은 채(제대로 된 메소드를 만들어 줘도 됩니다.) 만들어주어 인터페이스를 받은 클래스에서 오버라이딩하여 사용하도록 합니다.
class Boy implements Sample {
String name;
Boy(this.name);
@override
void sample() {
// TODO: implement sample
}
@override
void sayName() {
// TODO: implement sayName
}
}
인터페이스에 주의할 점은 반드시 인터페이스에 있는 변수와 메소드는 모두 정의를 해주어야 합니다.
그렇지 않으면 에러가 발생합니다.
메소드는 오버라이딩을 해주어야 합니다만 어노테이션은 꼭 추가 안 해줘도 되는 듯합니다.. 하지만 혼자 개발하는 것이 아니라면 붙여주는 것이 모두를 위해서 좋을 듯싶네요
sample 메소드의 경우 인터페이스에 로그를 찍어놓았지만, 오버라이딩을 하면 로그가 안 찍히는 것을 확인할 수 있습니다.
마무리
void main() {
Boy sample = Boy("dd");
print(sample is Sample);
print(sample is Boy);
}
상속과 마찬가지로 인터페이스를 통해 만들어진 객체의 타입을 확인해 보면 같습니다
위와 같이 sample은 추상클래스인 Sample로 확인을 해보면 true가 반환되며 물론 Boy클래스로 확인을 해보면 이 또한 true가 반환이 됩니다.
'[# 2]…My DevelopStory' 카테고리의 다른 글
왜 안드로이드 개발자라면 플러터를 배워야 할까요? (0) | 2023.05.19 |
---|---|
안드로이드 뷰모델, 솔직히 이것만 알면 된다 ~ Android Viewmodel (0) | 2023.01.10 |
플러터 다트언어 상속 적용하기 ~ Flutter Dart Extends (0) | 2022.12.22 |
안드로이드 FCM(Firebase Cloud Messaging) 이해하기 (0) | 2022.12.10 |
안드로이드 엑티비티 / 프레그먼트 라이프사이클 ~ Android Activity / Fragment LifeCycle (0) | 2022.12.05 |