반응형
Using implements
클래스 상속은 extends 를 사용하지만 implements 와 차이가 있습니다.
implements 를 사용하는 경우는 클래스의 모든 변수와 함수 등을
모두 상속받는 것이 아니라 단지 타입을 상속 받기 위한 것인데요.
implements 하게되면 implements 클래스의 함수 등을 구현해주어야 합니다.
인터페이스(interface) 처럼 말이죠.
bird(새) 와 duck(오리) 클래스를 implements 해야하는 경우가 있다고 가정해보겠습니다.
둘다 모두 animal(동물)입니다.
bird 와 duck 은 모두 날 수(fly) 있지만 duck 은 swim(수영)할 수 있습니다.
아래의 예제 코드를 확인하세요.
class Animal {}
// behaviors
abstract class Flyer {
void fly() => print('I can fly!');
}
abstract class Swimmer {
void swim() => print('I can swim!');
}
class Bird extends Animal implements Flyer {
@override
void fly() => print('I can fly!');
}
class Duck extends Animal implements Swimmer, Flyer {
@override
void fly() => print('I can fly!');
@override
void swim() => print('I can swim!');
}
void main(){
Bird a = new Bird();
Duck b = new Duck();
a.fly();
b.fly();
b.swim();
}
참고 : https://medium.com/@manoelsrs/dart-extends-vs-implements-vs-with-b070f9637b36
반응형
'IT News > Flutter & Dart' 카테고리의 다른 글
윈도우11 에서 플러터(Flutter) 설치하기 : Desktop development with C++ (0) | 2022.03.17 |
---|---|
Dart 상속(Inheritance)과 믹스인(Mixins) : extends, with (1) | 2022.03.08 |
Dart 에서 Sound null safety 예제(example) (1) | 2022.03.03 |