服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - java中dart类详细讲解

java中dart类详细讲解

2021-08-06 12:16流年少年 Java教程

这篇文章主要介绍了dart类详细讲解,实例讲解的很清晰,有对于这方面不太清楚的同学可以跟着学习下

dart 是一个面向对象的语言;面向对象有

  1. 继承
  2. 封装
  3. 多态

dart的所有东西都是对象,所有的对象都是继承与object类

一个类通常是由属性和方法组成的

在dart中如果你要自定义一个类的话,将这个类放在main函数外面

类名使用大驼峰方法名使用小驼峰

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//定义一个类的属性和方法
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 .改变类中的属性和方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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.默认构造函数

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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.默认构造函数简写

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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.命名构造函数,命名构造函数是可以写多个的;但是默认构造函数只能写一个

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Person {
 //我是默认的构造函数
 Person() {
  print('我是默认的构造函数');
 }
 // 命名构造函数
 Person.mynow() {
  print('我是命名构造函数');
 }
}
 
void main() {
 // 实例化的时候,会默认构造自动触发
 Person p = new Person(); // 等价 var p=new Person
 Person v = new Person.mynow(); // 触发命名构造函数
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
在项目的根目录创建一个文件夹 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(); // 触发命名构造函数
}

8.dart修饰符

dart和其他面向对象的语言不一样。没有向public private 这样的访问修饰符

但是我们可以使用_把一个属性或者方法定义成私有的,(就是在变量或者方法的前面添加_;并且要单独把他抽离出去变成一个文件 放在lib目录下,这样外面就不能够访问了);

但是个人觉得这种没有实质的意义 如果要访问这个私有的方法,那么在类种添加一个共有的方法;去访问这个私有的方法;访问在return回去; 就可以访问这个私有的方法了 私有方法,只有在当前类中访问哈 在lib目录下的animal.dart文件;

内容如下

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
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);//调用的时候直接通过访问属性的方式访问方法
}

10.dart 中的set 方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 我们这直接通过属性获取值
}

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 我们这直接通过属性获取值
}

到此这篇关于dart类详细讲解的文章就介绍到这了,更多相关dart类讲解内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://www.cnblogs.com/ishoulgodo/p/14394137.html

延伸 · 阅读

精彩推荐
  • Java教程基于maven的ssm框架整合的示例代码

    基于maven的ssm框架整合的示例代码

    本篇文章主要介绍了基于maven的ssm框架整合的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    雨点的名字11152021-03-09
  • Java教程在Spring Boot中加载XML配置的完整步骤

    在Spring Boot中加载XML配置的完整步骤

    这篇文章主要给大家介绍了关于在Spring Boot中加载XML配置的完整步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值...

    涛GuoGuo的跟屁虫丶博Ke3782020-09-03
  • Java教程利用Spring boot如何创建简单的web交互应用

    利用Spring boot如何创建简单的web交互应用

    这篇文章主要介绍了利用Spring boot如何创建简单的web交互应用的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考价值,需要的朋友们...

    Be a funny man.3522020-09-21
  • Java教程java的前期绑定和后期绑定使用示例

    java的前期绑定和后期绑定使用示例

    java的前期绑定在程序执行前根据编译时类型绑定,调用开销较小,如C语言只有前期绑定这种方法调用 ...

    java教程网1822019-11-05
  • Java教程java中JVM中如何存取数据和相关信息详解

    java中JVM中如何存取数据和相关信息详解

    这篇文章主要介绍了JVM中如何存取数据和相关信息详解,Java源代码文件(.java后缀)会被Java编译器编译为字节码文件,然后由JVM中的类加载器加载各个类的字...

    易水人去丶明月如霜5652019-06-27
  • Java教程Java实现调用MySQL存储过程详解

    Java实现调用MySQL存储过程详解

    相信大家都知道存储过程是在大型数据库系统中,一组为了完成特定功能的SQL语句集。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应...

    shootercheng3092020-07-05
  • Java教程SpringBoot配置发送Email的示例代码

    SpringBoot配置发送Email的示例代码

    本篇文章主要介绍了SpringBoot配置发送Email的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    阳光早已褪色2812020-12-05
  • Java教程java简单插入排序实例

    java简单插入排序实例

    这篇文章主要为大家详细介绍了java简单插入排序实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    五岁i1942020-12-14