📜  Dart编程-对象(1)

📅  最后修改于: 2023-12-03 15:00:20.708000             🧑  作者: Mango

Dart编程-对象介绍

Dart是一种静态类型的面向对象编程语言,源自于Google,和JavaScript和Python等语言有很多相似之处。

1. 类和对象

在Dart中,类是一种数据类型,用来描述一组有相同属性和方法的对象。而对象是类的实例,可以通过new关键字创建。

// 定义一个Person类
class Person {
  String name;
  int age;
  
  void sayHello() {
    print("Hello, my name is $name, I'm $age years old.");
  }
}

// 创建一个Person对象
var person = new Person();
person.name = "Tom";
person.age = 18;
person.sayHello();
2. 构造函数

构造函数是在对象被创建时调用的函数,用来初始化对象的状态。在Dart中,构造函数可以有多个,并且支持命名参数和可选参数。

// 定义一个Person类
class Person {
  String name;
  int age;
  
  // 默认构造函数
  Person(this.name, this.age);
  
  // 命名构造函数
  Person.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    age = json['age'];
  }
}

// 使用默认构造函数创建对象
var person1 = new Person("Tom", 18);

// 使用命名构造函数创建对象
var person2 = new Person.fromJson({
  'name': 'Jerry',
  'age': 20,
});
3. 继承

在Dart中,一个类可以继承自另一个类,从而可以复用父类的属性和方法。使用extends关键字来进行继承。

// 定义一个Animal类
class Animal {
  String name;
  void eat() {
    print("$name is eating.");
  }
}

// 定义一个Cat类继承自Animal类
class Cat extends Animal {
  void jump() {
    print("$name is jumping.");
  }
}

// 创建一个Cat对象
var cat = new Cat();
cat.name = "Kitty"
cat.eat();
cat.jump();
4. 接口

接口是一种抽象的数据类型,用来描述一个对象具有哪些属性和方法。在Dart中,接口是隐式的,不需要显式地声明。

// 定义一个Person接口
abstract class Person {
  String get name;
  void sayHello();
}

// 定义一个Student类实现Person接口
class Student implements Person {
  String name;
  
  void sayHello() {
    print("Hello, my name is $name, and I'm a student.");
  }
}

// 创建一个Student对象
var student = new Student();
student.name = "Tom";
student.sayHello();
5. Mixin

Mixin是一种多重继承的方式,它允许一个类在不继承另一个类的情况下复用它的属性和方法。

// 定义一个Logger Mixin
mixin Logger {
  void log(String message) {
    print(message);
  }
}

// 定义一个Person类,使用Logger Mixin
class Person with Logger {
  String name;
  
  void sayHello() {
    log("Hello, my name is $name.");
  }
}

// 创建一个Person对象
var person = new Person();
person.name = "Tom";
person.sayHello();
person.log("This message will be printed by Logger Mixin.");

更多Dart语法和特性,请参考Dart官方文档