8.Dart-对象属性, 方法, get, set

/**

* Dart所有的东西都是对象, 所有的对象都是继承自Object类

* Dart是一门实用类和单继承的面向对象语言, 所有的对象都是类的实例, 并且所有的类都是Object的子类

* 面向对象的三个基本特征: 封装,  继承,  多态

* 这和Object-C  Swift  Java等面向对象语言一样

*

* Dart里面构造函数可以写多个

* Dart中没有public,  private  protected等这些访问修饰符

*    但是我们可以使用一个下划线_把一个属性或者方法定义成私有,

*    这样使用需要将类单独放到一个文件里面抽离出来

*/

//通过import引入别的文件的类,和其他语言都差不多

import "lib/Stu.dart";

main(List args) {

  List l = new List();

  l.add(2);

  // var p = new Person();

  // p.des();

  // p.name = "王五";

  // p.des();

  Person1 p1 = new Person1("李四", 30);

  p1.des();

  Person2 p2 = new Person2("王五", 22);

  p2.des();

  Person3 p3 = new Person3.des("小红", 28);

  p3.des();

  print(p3.introlduce);

  p3.name = "小虎";

  print(p3.introlduce);

  p3.introduceMap = {"name": "小鹿", "age": 28};

  print(p3.introlduce);

  Student stu = new Student("小红", 10);

  stu.des();

  // stu._name = "daxa";//这里是拿不到_name的,因为_name是私有属性

  Rect r = new Rect();

  print(r.area);

}

// 定义类用class关键字, 首字母大写

class Person {

  String name = "张三";

  int age = 20;

  // **** 默认构造函数,在使用new创建对象实例的时候就会触发这个函数

  Person() {

    print("这是构造函数, 在使用new创建对象实例的时候就会触发这个函数!");

  }

  void des() {

    print("${this.name}, ${this.age}");

  }

  void des1() {

    print("$name-$age");

  }

}

// 定义类用class关键字, 首字母大写

class Person1 {

  String name;

  int age;

  // **** 默认构造函数,在使用new创建对象实例的时候就会触发这个函数

  // 在构造函数中进行初始化属性

  Person1(String name, int age) {

    this.name = name;

    this.age = age;

    print("这是构造函数, 在使用new创建对象实例的时候就会触发这个函数!");

  }

  void des() {

    print("${this.name}, ${this.age}");

  }

  void des1() {

    print("$name-$age");

  }

}

// 定义类用class关键字, 首字母大写

class Person2 {

  String name;

  int age;

  // **** 默认构造函数,在使用new创建对象实例的时候就会触发这个函数

  // 在构造函数中进行初始化属性

  // 这样可以简写一下,就是直接将参数写成this.的形式

  Person2(this.name, this.age) {

    print("这是构造函数, 在使用new创建对象实例的时候就会触发这个函数!");

  }

  void des() {

    print("${this.name}, ${this.age}");

  }

  void des1() {

    print("$name-$age");

  }

}

// 自定义的命名构造函数

// 自定义构造函数可以写多个

class Person3 {

  String name;

  int age;

  // 默认构造函数 new Person3是调用

  Person3(this.name, this.age) {}

  // 这是命令构造函数 new Person3.des时调用

  Person3.des(this.name, this.age) {}

  void des() {

    print("${this.name}, ${this.age}");

  }

  //计算属性:  get 属性名 {}

  get introlduce {

    // return的值就是introlduce的值

    return "自我介绍:${this.name}, ${this.age}";

  }

  // set 属性名(参数) {}

  set introduceMap(value) {

    this.name = value["name"];

    this.age = value["age"];

  }

}

// 初始化赋值

class Rect {

  int width;

  int height;

  Rect()

      : height = 10,

        width = 5 {

    print("这种写法,height和width的赋值,是在初始化之前");

  }

  get area {

    return this.width * this.height;

  }

}

你可能感兴趣的:(8.Dart-对象属性, 方法, get, set)