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);
}
}