반응형
interface
class의 구조를 강제하고 싶을 때 사용한다.
class에서 선언하고 인스턴스로 만들지 않고 다른 클래스에서 사용한다.
implements 키워드를 사용한다.
상속과 비슷하다
뭔 말인지 모르겠으니 형태를 직접 봐보자
abstract class IdolInterface {
String name;
IdolInterface(this.name);
void sayName() // 메서드를 선언만하고 만들지는 않음 // 함수의 바디( {} ) 도 없어도 된다.
}
쉽게 위처럼 빈 틀이 interface라고 생각하고
틀위에 구현하는 것은 다른 클래스에서 틀에 맞게 구현한다고 생각
위 인터페이스는 그야말로 틀(인스턴스로 만들 때 사용하면 안돼)이기 때문에 그 안에 어떤 값도 들어가면 안된다.
틀은 변경이나 수정이 되면 안되니까 변경되지 않기 위해 abstract 키워드를 사용한다.
함수의 바디( {} ) 도 없어도 된다.
class BoyGroup implements IdolInterface{ // 상속과 비슷하게 extends대신 implements를 사용
}
이렇게 작성하고 난 후에 에러를 확인해보면
'IdolInterface.sayname', 'getter IdolInterface.name' 및 'setter IdolInterface.name'의 구체적인 구현이 없습니다.
구현을 직접 틀에 맞게 (IdolInterface 에 맞게) 구현을 하란다.
class BoyGroup implements IdolInterface{
String name;
BoyGroup(this.name);
void sayName() {
print('저희는 $name 입니다.');
}
}
class GirlGroup implements IdolInterface{
String name;
GirlGroup(this.name);
void sayName() {
print('저희는 $name 입니다.');
}
}
위처럼 인스턴스를 틀에 맞게 구현해줬다.
void main() {
BoyGroup bts = BoyGroup('BTS');
GirlGroup newJeans = GirlGroup('NEWJEANS');
bts.sayName();
newJeans.sayName();
}
반응형
'Flutter > Dart 문법' 카테고리의 다른 글
[Dart] 이어진 숫자 분리해서 List/map 적용하기 (0) | 2023.03.23 |
---|---|
[Dart] Generic (0) | 2023.03.22 |
[Dart] Static (0) | 2023.03.22 |
[Dart] 오버라이딩 (0) | 2023.03.22 |
[Dart] 상속 (0) | 2023.03.22 |