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