QA Automation/dart

14. Interface와 abstract / Generic

kokorii_ 2023. 5. 17. 15:42

1. Interface 와 abstract 

  • 인스턴스화 하지 않고 어떤 클래스의 구조를 강제하는 것이 인터페이스의 역할 
  • 인터페이스의 인스턴스화를 막기위해 (특정 구조의 인스턴스화를 막기위해) abstract keyword 사용
  • interface를 implement 하는 클래스는 인터페이스의 구조를 반드시 필수적으로 선언해야함
void main(){
  
  BoyGroup bts = BoyGroup('bts');
  GirlGroup redvelvet = GirlGroup('redvelvet');
  
  bts.sayName();
  redvelvet.sayName();
  
  print('--type check--');
  
  print(bts is IdolInterface);
  print(bts is BoyGroup);
  print(bts is GirlGroup);
  
}

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

class BoyGroup implements IdolInterface{
  
  String name;
  
  BoyGroup(this.name);
  
  void sayName(){
    print('my name is $name');
  }
}

class GirlGroup implements IdolInterface{
  
  String name;
  
  GirlGroup(this.name);
  
  void sayName(){
    print('my name is $name');
  }
  
}

2. generic

  • 타입을 외부에서 받아 쓸 때 사용함
  • 여러개의 타입을 받아서 사용할 수 있음.(단일도 가능)
void main(){
  
  Lecture<int, String> lt1 = Lecture('123', 'lecture1');
  
  lt1.printidType();
  
  Lecture<int, String> lt2 = Lecture(123, "lecture2");
  
  lt2.printidType();
  
}

//class Lecture<Type>
class Lecture<T, x>{
  final T id;
  final x name;
  
  Lecture(this.id, this.name);
  
  void printidType(){
    print(id.runtimeType);
  }
}
댓글수2