📅  最后修改于: 2023-12-03 15:00:20.708000             🧑  作者: Mango
Dart是一种静态类型的面向对象编程语言,源自于Google,和JavaScript和Python等语言有很多相似之处。
在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();
构造函数是在对象被创建时调用的函数,用来初始化对象的状态。在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,
});
在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();
接口是一种抽象的数据类型,用来描述一个对象具有哪些属性和方法。在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();
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官方文档。