[TIL] Dart-Interface

link717·2021년 7월 21일
0

TIL

목록 보기
45/53
post-thumbnail

🌼 Interface

  • Interface : class에서 꼭 선언해야하는 변수/함수 등을 정의할 때 interface 개념을 사용한다.

    . 별도의 선언 방법은 없으며 class를 생성하듯 Interface class를 만들면 된다.
    . Interface class를 implements 하는 것은 interface로 정의된 것을 무조건 정의해라의 의미이다.
    . 비슷한 성격을 가진 class가 특정 변수 혹은 함수를 꼭 가져야하는 상황일 때 사용한다.

void main() {
  BoyGroup bts = BoyGroup('bts');
  bts.sayName();
  
  GirlGroup redVelvet = GirlGroup('redVelvet');
  redVelvet.sayName();
}

abstract class IdolInterface {
  String? name;
  void sayName(){}
}

class BoyGroup implements IdolInterface {
  @override
  String? name;
  BoyGroup(String name);

  @override
  void sayName() {
    print('제 이름은 $name입니다.');
  }
}

class GirlGroup implements IdolInterface {
  @override
  String? name;
  GirlGroup(String name);

  @override
  void sayName() {
    print('제 이름은 $name입니다.');
  }
}

  • Q. Inheritance와 비슷한 개념이 아닌가?
    . 부모 class를 extends하고 @override를 해도 비슷하게 만들 수 있다.
    . 다만, 부모의 값을 그대로 상속 받는 것과 꼭 사용할 변수/함수를 정의하는 것은 약간의 뉘앙스 차이가 있으므로 상황에 맞춰 적절하게 사용하는 것이 좋다.
void main() {
  BoyGroup bts = BoyGroup('bts');
  bts.sayName();
}

class IdolInterface {
  String? name;
  void sayName(){}
}

class Idol {
  final String name;
  Idol(this.name);
  
  void sayName(){
    print('제 이름은 $name입니다.');
  }
}


class BoyGroup extends Idol {
  BoyGroup(String name) : super(name);
  
  @override
  void sayName() {
    print('제 이름은 $name입니다.');
  }
}

출처:YOUTUBE-코드팩토리

profile
Turtle Never stop

0개의 댓글