java中dart类详细讲解
作者:流年少年 发布时间:2022-01-23 13:01:13
标签:java,dart,类
dart 是一个面向对象的语言;面向对象有
继承
封装
多态
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(); // 触发命名构造函数
}
8.dart修饰符
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);//调用的时候直接通过访问属性的方式访问方法
}
10.dart 中的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 我们这直接通过属性获取值
}
11.在实例化之前,给类内部初始化数值
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 我们这直接通过属性获取值
}
来源:https://www.cnblogs.com/ishoulgodo/p/14394137.html


猜你喜欢
- 杨辉三角的规律:1.每行的数据个数和在第几行一样。2.每行第一个数和最后一个数都是1.3.每行除了第一个数据和最后一个数据 其他数据的值等于
- 一、查询中排除标识字段1.1 测试查询@Testpublic void findAllTest() { List&
- 直接用英文逗号分隔就可以了,比如:inerface IHello { String sayHello(String name);
- 一、银行存取款1.前言毕竟谁不喜欢钱呢!(不是😅)我看谁不喜欢在知识的海洋中遨游😤!2.描述银行存取款的流程是人们非常熟悉的事情,用户可以在
- 本文实例讲述了Android自定义个性化的Dialog。分享给大家供大家参考,具体如下:Dialog:mDialog = new Dialo
- 在Android项目开发过程中,Android Studio是一款非常强大的开发工具。到底有多强大,用了你就知道了。本文我将介绍Studio
- 掌握内存操作流输入和输出都是从文件中来的,当然,也可将输出的位置设置在内存上,这就需要ByteArrayInputStream和ByteAr
- 一、概述有序数组中常常用到二分查找,能提高查找的速度。今天,我们用顺序查找和二分查找实现数组的增删改查。二、有序数组的优缺点优点:查找速度比
- 在Android控件View的文字周围添加图标,供大家参考,具体内容如下在控件TextView文字周围放置图片(基于TextView的But
- Java中throws和throw的区别讲解当然,你需要明白异常在Java中式以一个对象来看待。并且所有系统定义的编译和运行异常都可以由系统
- 废话不多说了,直接给大家贴代码了,具体代码如下所示:package wxapi.WxHelper; import java.io.Buffe
- 要想充分理解C# out和ref,必须先明确如下两个概念(对值类型与引用类型掌握比较好的,可以跳过“一、明确两个基本概念”)一、明确两个基本
- 1、Java字符串在 Java 中字符串被作为 String 类型的对象处理。 String 类位于 java.lang 包中,默认情况下该
- 前言看 WMS 代码的时候看到了 Handler.runWithScissors 方法,所以来恶补一下public static Windo
- 在学习操作系统这本书的时候,我们使用的是汤小丹老师的《计算机操作系统》接下来我将会使用java语言去实现内部代码。Swap指令最佳置换算法是
- 在程序中对文件进行压缩解压缩是很重要的功能,不仅能减小文件的体积,还能对文件起到保护作用。如果是生成用户可以下载的文件,还可以极大的减少网络
- 实践过程效果代码class BaseClass{ public class Win32
- final 可以适用的范围:修饰类:使用这种修饰符的类无法被继承修饰函数:被修饰的不能被重写修饰属性:1.final修饰的成员变量是常量,值
- 本文介绍了springboot前后台数据交互的示例代码,分享给大家,具体如下:1.在路径中传递数据,比如对某个数据的id:123前台发送:格
- 目录为了实现用户登录拦截你是否写过如下代码呢?1. 基于Filter2. 基于Struts3. 基于SpringMVC如何使用自定义注解完成