美文网首页
dart快速入门教程 (7.1)

dart快速入门教程 (7.1)

作者: 螺钉课堂 | 来源:发表于2019-12-23 10:35 被阅读0次

7.面向对象

dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,所有的类都是Object的子类,换句话说就是万物皆对象

#7.1.类与对象

void main() {
  // 注意:new关键字可以省略
  var p = new  Person();
  p.name = "xiaoqiang";
  p.showName();
  p.showAge();
}

class Person {
  String name;
  int age;
  void showName(){
    print("名字是:${name}");
  }
  void showAge () {
    print("年龄是:${age}");
  }
}

注意1:可以使用final来创建一个只读的属性

void main() {
  // 注意:new关键字可以省略
  var p = new  Person();
  p.name = "xiaoqiang";
  p.showName();
  p.showAge();
  p.gender = "女";  // 报错, gender定义的时候是不能修改的
}

class Person {
  String name;
  int age;
  final String gender="男";
  void showName(){
    print("名字是:${name}");
  }
  void showAge () {
    print("年龄是:${age}");
  }
}

注意2: 方法不能被重载

class Person {
  String name;
  int age;
  final String gender="男";
  void showName(){
    print("名字是:${name}");
  }
  void showAge () {
    print("年龄是:${age}");
  }
  void showName () { // 报错
    print("名字是:${name}");  
  }
}

#7.2.计算属性

计算属性从字面上可以理解为值是通过计算得来的

import 'dart:math';

void main() {
  // 注意:new关键字可以省略
  var p = new  RrightTriangle();
  // p.a = 3;
  // p.b = 4;
  // print(p.c);
  p.c = 5;
  print(p.a);

}

class RrightTriangle {
  num a, b;
  num get c {
      return sqrt(a*a + b*b);
    }
    set c(value) {
      a = sqrt(pow(value, 2) - 16);
    }
}

#7.3.构造方法

构造方法就是我们创建对象时调用的方法,如果没有自定义构造方法,则会调用默认的构造方法, 如果存在自定义的构造方法,则默认方法就无效,同时构造方法是不能重载的


void main() {
  // 注意:new关键字可以省略
  var p = new Person("xiaoqiang", 12, "男");
  print(p.name);

}

class Person {
  String name;
  num age;
  String gender;
  Person(this.name, this.age, this.gender){
    print(this.name);
    print(this.age);
    print(this.gender);
  }
  // 如果再定义一个Person方法就会报错
}

可以定义多个构造方法


void main() {
  // 注意:new关键字可以省略
  var p = new Person("xiaoqiang", 12, "男");
  print(p.name);
  // 创建对象的时候,可以使用fn构造方法
  var p2 = new Person.fn("xiaohong", 12);

}

class Person {
  String name;
  num age;
  String gender;
  Person(name, age, gender){
    this.name = name;
    this.age = age;
    this.gender = gender;
    print(this.name);
    print(this.age);
    print(this.gender);
  }
  Person.fn(name, age) {
    print(name);
    print(age);
  }
}

如果一个类是不可变的,这个时候我们需要使用const来声明构造方法,并且把所有变量都设置为final

import 'dart:math';

void main() {
  // 注意:new关键字可以省略
  var p = const Person("xiaoqiang", 12, "男");
  p.name = "xxx";  // 报错

}

class Person {
  final String name;
  final num age;
  final String gender;
  const Person(this.name, this.age, this.gender);

}

相关文章

  • dart快速入门教程 (7.1)

    7.面向对象 dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,所有的类都是Object的子类,...

  • dart快速入门教程 (1)

    1.环境搭建 #1.1.dart简介 Dart 是一种 易于学习、 易于扩展、并且可以部署到 任何地方 的 应用 ...

  • dart快速入门教程 (3)

    3.运算符 运算符本质上就是代表某运算规则的符号,例如: + ,这个符号,代表着数学运算里面的加法,按照加法法则进...

  • dart快速入门教程 (4)

    4.流程控制 #4.1.分支结构 1.if语句 2.switch语句 #4.2.循环结构 1.for循环 2.fo...

  • dart快速入门教程 (6)

    6.内置操作方法和属性 #6.1.数字类型 1.isEven判断是否是偶数 2.isOdd判断是否是奇数 3.ab...

  • dart快速入门教程 (7.3)

    7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 引...

  • dart快速入门教程 (2)

    2.变量和数据类型 #2.1.变量和常量 变量通俗的说就是可以变化的量,作用就是用来存储数据,你可以把一个变量看作...

  • dart快速入门教程 (5)

    5.函数 #5.1.函数定义 语法: 举例: 参数类型是可以省略的 如果没有指定返回值,默认返回null 支持箭头...

  • dart快速入门教程 (7.2)

    7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 引...

  • dart快速入门教程 (8)

    9.dart中的库 #9.1.自定义库 自定义库我们在前面已经使用过了,把某些功能抽取到一个文件,使用的时候通过i...

网友评论

      本文标题:dart快速入门教程 (7.1)

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