dart學習(面向對象)

1、類和對象

1)使用關鍵字class聲明一個類

2)使用關鍵字new創建一個對象,new可省略

3)所有對象都繼承於Object類

 

2、屬性和方法

1)屬性默認生成getter和setter方法

2)使用final聲明的屬性只有getter方法(只讀)

3)屬性和方法通過.訪問

4)方法不能被重載

void main() {
  var person = new Person();
  person.name = "Tom";
  person.age = 20;

  print(person.name);

  person.work();

}

class Person {
  String name;
  int age;
  //final String address;

  void work() {
    print("Name is $name , Age is $age");
  }

}

運行結果:
Tom
Name is Tom , Age is 20 

 

3、類及成員可見性

1)Dart中的可見性以library(庫)爲單位

2)默認情況下,每個Dart文件就是一個庫

3)使用_表示庫的私有性

4)使用import導入庫

(1)person.dart
class Person {
  String name;
  int age;

  void work() {
    print("Name is $name , Age is $age");
  }

}

(2)class_and_object.dart.dart

import 'persion.dart';

void main() {
  var person = new Person();
  person.name = "Tom";
  person.age = 20;

  print(person.name);

  person.work();

}

運行結果:
Tom
Name is Tom , Age is 20

 

4、計算屬性

顧名思義,計算屬性的值是通過計算而來的,本身不存儲值

計算屬性賦值,其實是通過計算轉換到其他實例變量

calculated_property.dart

void main() {
  var rect = new Rectangle();
  rect.height = 20;
  rect.width = 10;

  //print(rect.area());
  print(rect.area);

  rect.setWidth = 300;
  print(rect.width);
}

class Rectangle {
  num width, height;

  //1.
//  num area() {
//    return width * height;
//  }

  //2.
//  num get area {
//    return width * height;
//  }

  //3.
  num get area => width * height;

  set setWidth(value) {
    width = value / 20;
  }
  
}

運行結果:200

 

 

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