[Dart] 7. mixin과 추상

허성재's avatar
Oct 11, 2024
[Dart] 7. mixin과 추상
Dart에서 다중 상속이 불가능하기 때문에 Mixin을 활용하면 여러 기능을 손쉽게 클래스에 추가할 수 있습니다.
 
mixin Engine { int power = 5000; } mixin Wheel { int count = 4; } class Sonata with Engine, Wheel {} void main() { Sonata s = Sonata(); print(s.power); Engine e = Engine(); // 인스턴스 할수없다. }
만약 인스턴스 하고싶다면 class를 붙혀준다.
 
mixin class Engine { int power = 5000; } mixin class Wheel { int count = 4; } class Sonata with Engine, Wheel {} void main() { Sonata s = Sonata(); print(s.power); Engine e = Engine(); print(e.power); }
추상클래스
abstract class Animal { void speak(); } class Dog extends Animal { @override void speak() { print("멍멍"); } } class Cat extends Animal { @override void speak() { print("야옹"); } } void main() { Animal a1 = Dog(); Animal a2 = Cat(); a1.speak(); }
구분
implements
extends
mixin
역할
메서드 시그니처만 가져오고, 반드시 구현해야 함
부모 클래스의 모든 기능을 상속받고, 필요시 오버라이드
여러 클래스에 재사용 가능한 동작을 추가
특징
클래스의 메서드 구현을 강제
부모 클래스의 모든 메서드와 필드를 물려받음
여러 Mixin을 하나의 클래스에 동시 적용 가능
사용 방식
implements 키워드 사용
extends 키워드 사용
with 키워드로 적용
사용 예시
여러 인터페이스를 구현할 때
상속을 통해 기능을 확장하고자 할 때
기능을 여러 클래스에 혼합하고자 할 때
다중 사용
여러 클래스의 인터페이스를 구현 가능
단일 상속만 가능
여러 Mixin을 동시에 적용 가능
Share article

heo-gom