[LMS] Dart 기본 문법 [ Abstract & Mixin ]

nouveau·2023년 11월 29일
0

Abstract & Mixin

Abstract

추상클래스(Abstract Class)는 다른 클래스들에 공통된 속성과 메서드를 상속하는 클래스이며,
객체를 생성할 수 없고, 메서드는 선언만 하고 실제 로직 구현은 하지 않는다.

상속받은 자식클래스에서 메서드를 override 하여 구현한다.

ex : 선언은 돼 있지만 정의 되지 않은 클래스 ( Pizza 이긴 한데 토핑이 뭐가 올라갈지 모르는 상태 )

abstract class Pizza {
  topping();
}

class CheesePizza extends Pizza {
  
  topping() {
    print("Topping : Cheese");
  }
}

class PepperoniPizza extends Pizza {
  
  topping() {
    print("Topping : Pepperoni");
  }
}

main() {
  Pizza cheesePizza = CheesePizza();
  cheesePizza.topping();
  
  Pizza pepperoniPizza = PepperoniPizza();
  pepperoniPizza.topping();
}

Mixin

공식문서 => "Mixin은 여러 클래스 계층에서 클래스 코드를 재사용하는 방법이다."

상속과 상관없는 별도의 확장을 위해 사용하며 상속과는 다르게 여러개를 선언 할 수 있고,
부모/자식 클래스 계층에 상관 없이 사용 할 수 있다.

mixin Fineapple {
  void no() {
    print("피자엔 이런거 넣으면 안됨.");
  }
}

mixin Cheese {
  void yes() {
    print("더더더더더..");
  }
}

// 부모 클래스
abstract class Pizza {
  topping();
}

// 자식 클래스
class PepperoniPizza extends Pizza with Fineapple, Cheese {
  
  topping() {
    print("Topping : Pepperoni");
    no();
    yes();
  }
}

// 부모 클래스
abstract class Menu with Fineapple {
  
  no();
}

// 자식 클래스
class HwangDo extends Menu {
  
  void no() {
    print("???");
  }
}

main() {
  Pizza pepperoniPizza = PepperoniPizza();
  pepperoniPizza.topping();

  HwangDo menu = HwangDo();
  menu.no();
}

0개의 댓글