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

 

 

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