Flutter

Flutter - extends, implements, with, mixin

팡세영 2024. 4. 30. 21:18

Flutter를 공부하다 다양한 상속 관계 키워드를 보게 되었다.

 

extends

  • 다중 상속 불가능
  • 부모 클래스의 메서드를 모두 구현하지 않아도 된다.
class Animal {
  void makeSound() {
    print('Some sound');
  }
}

class Dog extends Animal {
  void bark() {
    print('Woof!');
  }
}

void main() {
  var dog = Dog();
  dog.makeSound(); // 상위 클래스의 메서드 호출
  dog.bark(); // 하위 클래스의 메서드 호출
}

 


implements

  • 다중 상속 가능
  • 모든 부모 클래스의 메서드를 오버라이딩해서 구현 해주어야 한다.
abstract class Vehicle {
  void drive();
}

class Car implements Vehicle {
  @override
  void drive() {
    print('Car is being driven.');
  }
}

void main() {
  var car = Car();
  car.drive();
}

with

  • extends와 implements의 특징을 합쳐 놓은 것
  • 다중 상속 가능
  • 부모 클래스의 메서드를 모두 구현하지 않아도 된다.
  • mixin 키워드만 상속 가능 (일반 클래스 불가능)
mixin Swim {
  void swim() {
    print('Swimming...');
  }
}

class Fish with Swim {
  // Fish 클래스에는 swim 메서드가 포함됩니다.
}

void main() {
  var fish = Fish();
  fish.swim(); // Swim mixin의 메서드 호출
}