美文网首页
8.Dart-对象属性, 方法, get, set

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

作者: 你的胡霸霸 | 来源:发表于2021-09-06 09:32 被阅读0次

/**

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

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

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

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

*

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

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

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

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

*/

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

import "lib/Stu.dart";

main(List<String> args) {

  List<int> 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

    /** * Dart所有的东西都是对象, 所有的对象都是继承自Object类 * Dart是一门实用类和单继承的面...

  • flutter set方法和get方法实现

    set、get 方法是一对用来读写对象属性的特殊方法,实例对象的每一个属性都有一个隐式的 get 方法 set 方...

  • JavaScript中的getter与setter方法

    概述 get和set为对象创造了一个伪属性的定义 get方法返回一个值,set方法为一个属性赋值 get语法 例子...

  • Vue - 计算属性、观察者(二)

    computer:计算属性get方法 computer:计算属性get set方法 set:function(ne...

  • computed深入

    计算属性set/get 计算属性 (单向)在computed属性对象中定义计算属性的方法,在页面使用{{方法名}}...

  • MVVM学习记录

    使用Object.defineProperty方法,然后通过get和set方法设置对象属性,可以让我们知道对象什么...

  • C#之属性

    属性:get { //读属性代码 } set { //写属性代码 } 属性结合了字段和方法的多个方面。 对于对象的...

  • 存取方法的误区

    存取(accessor)方法是用来读取或改变某个对象属性的方法。也就是我们平常所说的get方法和set方法。set...

  • 画图函数

    get set gca 图形对象gcfget(gcf)获取对象的属性set(gcf,color,red)设置属性的...

  • 属性动画与补间动画的性能差异

    属性动画操作的是对象的实例属性,例如translationX,然后反射调用set,get方法,多个属性动画同时执行...

网友评论

      本文标题:8.Dart-对象属性, 方法, get, set

      本文链接:https://www.haomeiwen.com/subject/yafqwltx.html