dart的一个文件可以存在多个类,但只能一个main方法。
实体类的示例:
class Student1 {
//属性-------------
String name;
int age;
//构造方法--------------------------
Student1();
// Student1(this.name);
// Student1(this.age);
// Student1(this.name, this.age); //这里只能使用一种
//Dart提供了命名构造函数,以使类定义多个构造函数:
Student1.stu1(this.name, this.age);
Student1.stu2(this.name);
Student1.stu3(this.age);
Student1.stu4();
//set、get方法--------------------------
//方法内只有一行语句可简写:
String get get_name => name;
int get get_age => age;
set set_name(String name) => this.name = name;
set set_age(int age) => this.age = age;
//toString方法 --------------------------
@override
String toString() {//自己定义
return "name:" + name.toString() + ",age:" + age.toString();
}
}
void main() {
//实例化
Student1 s1 = Student1(); //Dart2中new关键字已经成为一个可选项,可省略
Student1 s2 = new Student1();
//调用set
s2.set_name = 'MARK';
s2.set_age = 1;
//调用get
print(s2.get_name);
print(s2.get_age);
Student1 student1 = new Student1.stu1("leo", 18);
print(student1.toString());
student1.age = 16;
print(student1.get_age);
Student1 student2 = new Student1.stu4();
student2.age = 12;
print(student2.get_age);
}
抽象类、继承、实现的示例
//抽象类---------------------------
abstract class Shape {
// 定义了一个 Shape 类/接口
num perimeter();
// 这是一个抽象方法,不需要abstract关键字,是隐式接口的一部分。
}
//实现接口--------------------------------------
class Rectangle implements Shape {
// Rectangle 实现了 Shape 接口
final num height, width;
Rectangle(this.height, this.width); // 紧凑的构造函数语法
// 实现了 Shape 接口要求的 perimeter 方法
num perimeter() => 2 * height + 2 * width;
void m1(int a) {
print("value of a $a");
}
}
//继承---------------------------------------------
class Square extends Rectangle {
// Square 继承 Rectangle
Square(num size) : super(size, size); // 调用超类的构造函数
@override
void m1(int b) {
super.m1(b);
print("value of b $b");
}
}
void main() {
var square = new Square(5);
square.m1(6);
var result = square.perimeter();
print(result);
}