profile image

L o a d i n g . . .

반응형

다트에서도 물론 인터페이스가 존재하며 자바와 마찬가지로 클래스 옆에 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가 반환이 됩니다.

반응형
복사했습니다!