Dart中的類、對象

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章