dart类详细讲解

作者 : 开心源码 本文共3509个字,预计阅读时间需要9分钟 发布时间: 2022-05-14 共273人阅读
dart 是一个面向对象的语言;面向对象有 (1)继承  (2)封装   (3)多态dart的所有东西都是对象,所有的对象都是继承与object类一个类通常是由属性和方法组成的哈;在dart中假如你要自己设置一个类的话,将这个类放在main函数外面哈类名使用大驼峰方法名使用小驼峰

1 定义这个类的属性和方法

//定义一个类的属性和方法class Person {  String name = '张三';  int age = 19;  void getInfo() {    // print('我叫$name,今年$age');第一种    //推荐使用这样的写,通过this去访问    print("${this.name}====${this.age}");  }}//使用类中的属性和方法void main() {  // 调用Perso这个类  首先需要实例化这个类  //  Person p = new Person(); // 等价 var p=new Person  var p = new Person();  print(p.age);  p.getInfo();}

2 改变类中的属性和方法

class Person {  String name = '张三';  int age = 19;  void getInfo() {    //推荐使用这样的写法    print("${this.name}====${this.age}");  }  //限制类型,更改类中的属性和方法  SetUserinfo(int age) {    this.age = age;  }}void main() {  // 调用Perso这个类  首先需要实例化这个类  Person p = new Person(); // 等价 var p=new Person  print(p.age);//19  p.getInfo();//张三====19  p.SetUserinfo(100);  p.getInfo();//张三====100}

3默认构造函数

class Person {    //这是一个默认构造函数  Person() {    print('默认构造函数里面的内容,该方法在实例化的时候会自动出发哈');  }}void main() {  // 实例化的时候,会自动触发默认构造函数  Person p = new Person(); // 等价 var p=new Person}

4 动态传递,类屡次实例化,打印不同的值

class Person {  String name;  int age;  Person(String name, int age) {    this.name = name;    this.age = age;  }  void getuserInfo() {    print(this.name);    print(this.age);  }}void main() {  // 实例化的时候,会自动触发  Person p = new Person('张三', 10); // 等价 var p=new Person  p.getuserInfo();  //这个类可以实例化屡次的哈  Person v = new Person('张三1', 100); // 等价 var p=new Person  v.getuserInfo();}

5默认构造函数简写

class Person {  String name;  int age;  // Person(String name, int age) { //   this.name = name; //   this.age = age; // } //上面注释的代码等价于  Person(this.name, this.age); Person(this.name, this.age);  void getuserInfo() {    print(this.name);    print(this.age);  }}

6命名构造函数,命名构造函数是可以写多个的;但是默认构造函数只能写一个

class Person {  //我是默认的构造函数  Person() {    print('我是默认的构造函数');  }  // 命名构造函数  Person.mynow() {    print('我是命名构造函数');  }}void main() {  // 实例化的时候,会默认构造自动触发  Person p = new Person(); // 等价 var p=new Person  Person v = new Person.mynow(); // 触发命名构造函数}

7将类抽离出去,单独放一个文件夹中

在项目的根目录创立一个文件夹 lib在lib文件夹中创立一个文件 xxx.dart内容如下class Person {  //我是默认的构造函数  Person() {    print('我是默认的构造函数');  }  // 命名构造函数  Person.mynow() {    print('我是命名构造函数');  }}在需要的某个文件中引入import 'lib/xxx.dart';void main() {  // 实例化的时候,会默认构造自动触发  Person p = new Person(); // 等价 var p=new Person  Person v = new Person.mynow(); // 触发命名构造函数}

8dart修饰符

dart和其余面向对象的语言不一样。没有向public  private 这样的访问修饰符但是我们可以使用_把一个属性或者者方法定义成私有的哈;(就是在变量或者者方法的前面增加_;并且要单独把他抽离出去变成一个文件  放在lib目录下,这样外面就不能够访问了);但是个人觉得这种没有实质的意义假如要访问这个私有的方法,那么在类种增加一个共有的方法;去访问这个私有的方法;访问在return回去;即可以访问这个私有的方法了私有方法,只有在当前类中访问哈在lib目录下的animal.dart文件;内容如下class Animal {  String _name = 'dog';//这是私有的方法,只当前这个类可以访问;其余类是不能够访问的哈~;  // 假如非要访问这个类,可以通过共有方法来访问    // 通过公共方法来访问这个类;间接访问  getName(){    print(this._name);  }  int age = 19;  void getInfo() {    //推荐使用这样的写法    print("${this._name}====${this.age}");  }  //限制类型,更改类中的属性和方法  SetUserinfo(int age) {    this.age = age;  }}

9 计算矩形的面积将他改为get方法

class Rect {  num width;  num height;  Rect(this.width, this.height);  getUserINfo() {    return (this.width * this.height);  }}void main() {  // 实例化的时候,会默认构造自动触发  Rect p = new Rect(10, 4); // 等价 var p=new Person  print(p.getUserINfo());}将上面的代码改为get方法class Rect {  num width;  num height;  Rect(this.width, this.height);  // getUserINfo() {  //   return (this.width * this.height);  // }  // 将上面的代码该为get  get getUserINfo {    return (this.width * this.height);  }}void main() {  // 实例化的时候,会默认构造自动触发  Rect p = new Rect(10, 4);  // print(p.getUserINfo());  // 将上面的代码改为get方法的调用  print(p.getUserINfo);//调用的时候直接通过访问属性的方式访问方法}

09dart 中的set 方法

class Rect {  num width;  num height;  Rect(this.width, this.height);  // 设置值的时候。我们使用了set方法  set areaHeight(value) {    this.height = value;  }  get area {    return this.height;  }}void main() {  // 实例化的时候,会默认构造自动触发  Rect p = new Rect(10, 4);  p.areaHeight = 6; //当一个类的内部使用了set方法的时候。我们直接使用赋值;  print(p.area); //内部使用了get  我们这直接通过属性获取值}

10在实例化之前,给类内部初始化数值

class Rect {  num width;  num height;  // 在实例化之前,给类内部初始化数值  Rect()      : height = 2,        width = 10 {}  get area {    return this.height * this.width;  }}void main() {  // 实例化的时候,会默认构造自动触发  Rect p = new Rect();  print(p.area); //内部使用了get  我们这直接通过属性获取值}
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » dart类详细讲解

发表回复