[Dart/Flutter] 초보자를 위한 Extends / Mixin / Implements 정리
Flutter를 공부하다보면 Extends / Mixin / Implements 등이 자주 보입니다.
어떤거는 단일 상속 받고 어떤거는 다중 상속이 가능하고 막 복잡한데, 저도 초보자이기 때문에 저를 위한 정리를 여러분들과 공유할까 싶습니다!
Extends
상속을 사용하여, 한 클래스가 다른 클래스의 모든 속성과 메서드를 받아 자신의 것으로 만듬. 상속을 통해 코드 재사용성과 계층 구조를 만들 수 있다. 단일 상속만 지원함
=> 상속받는 클래스(Dog)가 상속해주는 클래스(Animal) 모든 속성과 메서드를 자신의 것처럼 사용할 수 있다는 것입니다. 다른 클래스의 모든 속성과 메서드를 상속만 받으면 사용할 수 있기 때문에, 같은 메서드를 다시 구현할 필요가 없이 사용이 가능하기에 코드의 재사용성이 높습니다.
class Animal {
void eat() => print('동물은 먹을수가 있어요.');
}
class Dog extends Animal{
void bark() => print('개는 짖을수가 있어요.');
}
// 여기서 Dog class는 Animal class를 상속 받는다.
// 이로인해 Dog class는 Animal class의 속성 및 메서드를 사용 가능함.
// Dog 인스턴스는 bark()와 eat() 둘 다 사용 가능함.
Mixin
클래스에 코드를 혼합할 수 있게 해주며, 다중 상속과 유사한 방식으로 여러 클래스의 기능을 하나의 클래스에 추가할 수 있게함.
class Animal {
void eat() => print('동물은 먹을 수가 있어요.');
}
mixin Flyer {
void fly() => print('이 동물은 날 수 있어요.');
}
mixin Swimmer {
void swim() => print('이 동물은 수영할 수 있어요.');
}
class Dcuk extends Animal with Flyer, Swimmer {
};
//여기서 Duck class는 eat, fly, swim의 3가지 메서드를 모두 사용할 수 있음.
implements
클래스가 특정 인터페이스를 구현하도록 강제함. (클래스 구현의 청사진 제공과 비슷함.)
예를들어 FlyingFish는 이름값을 하도록 날거나 수영할 수 있도록 해야겠죠? 그러니 아래와 같이 선언하는 것입니다.