面向对象

类、继承、接口

类定义

classes.dart
class User {
  final int id;
  String name;
  String? email;

  User(this.id, this.name, {this.email});
  User.guest() : id = 0, name = 'Guest';
  factory User.fromJson(Map json) => User(json['id'], json['name'], email: json['email']);

  String get displayName => email ?? name;
  void greet() => print('Hello, I am $name');
}

void main() {
  var user = User(1, 'Alice', email: 'alice@example.com');
  user.greet();
}

继承与接口

inheritance.dart
abstract class Animal { String get name; void speak(); }
abstract class Flyable { void fly(); }

class Dog extends Animal {
  @override String get name;
  Dog(this.name);
  @override void speak() => print('$name says Woof!');
}

class Bird implements Animal, Flyable {
  @override String get name;
  Bird(this.name);
  @override void speak() => print('$name says Tweet!');
  @override void fly() => print('$name is flying');
}

mixin Logger { void log(String msg) => print('[LOG] $msg'); }
class App with Logger { void run() => log('Started'); }

void main() {
  var dog = Dog('Buddy'); dog.speak();
  var bird = Bird('Tweety'); bird.speak(); bird.fly();
  App().run();
}