Person.dart
//定义Person类
class Person {
//属性
String name;
int age;
//默认构造函数
Person(String name, int age) {
this.name = name;
this.age = age;
}
//命名构造函数
Person.now() {
print("我是命名函数");
}
//方法
void printPersonInfo() {
print("${this.name}:${this.age}");
}
void setPersonInfo(String name, int age) {
this.name = name;
this.age = age;
}
}
Animal.dart
class Animal {
String _name; //表示私有属性,在属性前面加上_
int age;
//默认够着函数的简写
Animal(this._name, this.age);
void printName() {
print("${this._name}");
}
void _printAge() {
print("${this.age}");
}
}
Rect.dart
class Rect {
num height;
num width;
Rect(this.height, this.width);
//get方法
get area {
return this.height * this.width;
}
//set方法
set areaHeight(value) {
this.height = value;
}
}
oop.dart
import 'lib/Person.dart';
import 'lib/Animal.dart';
import 'lib/Rect.dart';
//Dart 中所有对象都继承自Object类
//Dart 是一门实用类和单继承的面向对象的语言,所有类都是Object的子类
void main() {
//实例化Person类
var p = new Person("张三", 18);
print("-----------------0");
p.printPersonInfo();
p.setPersonInfo("周建", 30);
print("-----------------1");
p.printPersonInfo();
print("-----------------2");
Person person = new Person("李四", 28);
person.printPersonInfo();
print("-----------------3");
Person p1 = new Person.now();
p1.setPersonInfo("李四", 28);
//私有属性
Animal amimal = new Animal("小猫", 2);
print(amimal.age); //name 访问不了,是私有的
amimal.printName();
print("-----------------4");
//set 和 get
Rect rect = new Rect(5, 4);
print(rect.area);
rect.areaHeight = 10;
print(rect.area);
print("-----------------5");
Square square = new Square();
print(square.area);
}
class Square {
int height;
int width;
//初始化之前,给变量赋值
Square()
: height = 5,
width = 5 {}
get area {
return this.height * this.width;
}
}
输出结果:
[Running] dart "/Users/zhoujian/DartDemo/oop.dart"
-----------------0
张三:18
-----------------1
周建:30
-----------------2
李四:28
-----------------3
我是命名函数
2
小猫
-----------------4
20
40
-----------------5
25
[Done] exited with code=0 in 1.134 seconds