dart类和对象

基本定义

类是一个包裹多个对象成员的一个整体,可以通过实例化获取类的对象,通过对象操纵内部对象

对象

对象具有由函数和数据(分别为方法和 实例变量)组成的成员。调用方法时,您会在对象上调用它:该方法可以访问该对象的函数和数据。

类的使用

定义一个类

class Person {String? name;int? age;String? sex;void printInfo() {print("name: $name, age: $age, sex: $sex");}
}

使用类

先生成这个类的对象,然后使用类的对象操作类

注意:使用new和不使用new,都可以正常生成对象

// 实例化对象
var p = Person();
// 实例化对象使用new
// var p = new Person();
p.name= "张三";
p.age= 18;
p.sex= "男";
p.printInfo();

构造函数

使用类的名称创建一个构造函数,可以在创建对象时,往其中传值,在类创建时,为参数赋值

class Person {String? name;int? age;String? sex;Person(this.name,this.age,this.sex);void printInfo() {print("name: $name, age: $age, sex: $sex");}
}
void main() {// 实例化对象var p = Person('张三', 18, '男');p.printInfo();
}

静态变量和方法

一般变量和方法只在类范围内有效,在外部想用需要先生成对象,除非使用static修饰变量或者方法,将变量或方法修改为静态变量和方法

class Person {static String name = "张三";static void printName() {print(name);}
}
void main() {//直接调用变量print(Person.name);//直接调用方法Person.printName();
}

继承

用于extends创建子类,并super引用超类:

子类可以使用父类的参数和方法,也可以重写父类的方法,使用super.来调用父类的内容

class Person {String? name;int? age;String? sex;Person(this.name,this.age,this.sex);void printInfo() {print("name: $name, age: $age, sex: $sex");}void breath() {print("我可以呼吸");}
}class Student extends Person {String? school;Student(String name, int age, String sex, this.school) : super(name, age, sex);//重写父类的方法,使用@override注解标示void printInfo() {print("name: $name, age: $age, sex: $sex, school: $school");//调用父类的方法super.breath();}
}
void main() {// 实例化对象var p = Student("小明", 18, "男", "清华大学");p.printInfo();
}

混入(Mixin)

如果你想为很多的类提供一个公用的接口,并且可以在每个类中进行调用,可以使用混合。

定义一个mixin

使用mixin关键字定义

mixin Football {String? footballClub;void playFootball(String? footballClub) {print("$footballClub playing football");}
}

使用mixin

要使用 mixin,请使用with关键字,后跟一个或多个 mixin 名称(可以跟一个或多个mixin)

class Student with Football {String? name;int? age;String? sex;String? school;Student(this.name, this.age, this.sex, this.school);void printInfo() {print("$name,$age,$sex,$school");}
}

调用mixin

void main() {// 实例化对象var p = Student("小明", 18, "男", "清华大学");p.playFootball(p.school);
}

接口

接口(Interface)是一种定义对象行为的蓝图。它描述了一组方法和属性,但不提供具体的实现。任何实现了该接口的类都必须提供这些方法和属性的具体实现。

定义一个接口

abstract interface class maker{void make();
}

使用一个接口

mixin Football implements maker{String? footballClub;void playFootball(String? footballClub) {print("$footballClub playing football");}
}

实现接口的实体类,必须实现接口的方法,否则会编译报错

abstract interface class maker{void make();
}
mixin Football implements maker{String? footballClub;void playFootball(String? footballClub) {print("$footballClub playing football");}
}class Student with Football {String? name;int? age;String? sex;String? school;Student(this.name, this.age, this.sex, this.school);void printInfo() {print("$name,$age,$sex,$school");}void make() {print("制作一个足球");}
}
void main() {// 实例化对象var p = Student("小明", 18, "男", "清华大学");p.playFootball(p.school);
}

枚举

枚举类型,通常称为枚举枚举,是一种用于表示固定数量的常量值的特殊类。

实现简单枚举

enum Color { red, green, blue }

使用枚举

像访问其他静态变量一样访问枚举值:

final favoriteColor = Color.blue;
if (favoriteColor == Color.blue) {print('Your favorite color is blue!');
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小

在数据可视化中,三维散点图是一种非常直观的方式来展示数据的分布。MATLAB 提供了强大的 scatter3 函数,可以用来绘制三维散点图,而通过调整点的颜色和大小,可以进一步增强图形的表现力。 在本篇博客中,我们将逐步讲解…

【Vulkan入门】04-开启Debug输出

目录 先叨叨git信息关键代码和主要APIVulkanEnv::SetDebugUtilMessenger()VulkanEnv::CreateVkInstance() 题外话 先叨叨 到上篇为止我们已经作了很多事情了。建立了Instance、挑选了物理设备、建立的Device和Queue。 之前做的都是相对简单和线性的工作,只要认真对…

卷积神经网络(CNN)的层次结构

卷积神经网络(CNN)是一种以其处理图像和视频数据的能力而闻名的深度学习模型,其基本结构通常包括以下几个层次,每个层次都有其特定的功能和作用: 1. 输入层(Input Layer): 卷积神经网…

【深度学习】四大图像分类网络之ResNet

ResNet网络是在2015年由微软实验室中的何凯明等几位提出,在CVPR 2016发表影响深远的网络模型,由何凯明团队提出来,在ImageNet的分类比赛上将网络深度直接提高到了152层,前一年夺冠的VGG只有19层。斩获当年ImageNet竞赛中分类任务第…

美团一面,有点难度

前几天分享过一篇训练营的朋友在阿里的一面面经,挺简单的她也是很轻松的过了,感兴趣的可以看一下我之前发的文章。 今天要分享的还是她的面经,美团的一面,感觉比阿里的难一些,各位观众老爷你怎么看? 自我介…

VS下网络快速连接检测实现

一.问题: VS实现PC软件和单片机的网络连接的时候,如果网线没有插入,检测连接失败,一般设置网络连接为非阻塞方式,但是如果单片机返回比较慢,会导致正常情况下也连不上,下面代码通过 设置等待方…

Windows电脑伪关机(快速启动模式),怎么真关机

Windows电脑在关机的时候,进入到一个伪关机的状态,也就是并没有真正的关机,但是在一些系统更新、变更了一些设置,进行重启等操作也会进入到真关机状态 这种一般是开启快速启动模式,开启了快速启动模式功能会在关机的时…

计算属性computed

使用 export default 的写法(Vue 单文件组件)和 使用 new Vue() 的写法(实例化 Vue)二者之间的区别: 1. 使用 export default 的写法(Vue 单文件组件) 这种写法常用于 Vue 的单文件组件&#xf…

【开发文档】资源汇总,持续更新中......

文章目录 AI大模型数据集PytorchPythonUltralyticsOpenCVNetronSklearnCMakeListsNVIDIADocker刷题网站持续更新,欢迎补充 本文汇总了一些常用的开发文档资源,涵盖了常用AI大模型、刷题网站、Python、Pytorch、OpenCV、TensorRT、Docker 等技术栈。通过这…

element Plus中 el-table表头宽度自适应,不换行

在工作中,使用el-table表格进行开发后,遇到了小屏幕显示器上显示表头文字会出现换行展示,比较影响美观,因此需要让表头的宽度变为不换行,且由内容自动撑开。 以下是作为工作记录,用于demo演示教程 先贴个…

模型预测控制(Model Predictive Control)

学习模型预测控制的几个阶段: 1.迷茫,一头雾水,立刻忘记: 一个易懂的MPC理论推导过程教程 2.感兴趣,知道了大概讲些什么东西,但是不知道如何应用: 一个系统讲解MPC的入门教程1 3.开始深度学习: 待续…

2021高等代数【南昌大学】

证明多项式 f ( x ) = 1 + x + x 2 2 ! + ⋯ + x n n ! f(x) = 1 + x + \frac{x^2}{2!} + \cdots + \frac{x^n}{n!} f(x)=1+x+2!x2​+⋯+n!xn​ 无重根。f ( x ) − f ′ ( x ) = x n n ! f(x) - f(x) = \frac{x^n}{n!} f(x)−f′(x)=n!xn​ ( f ( x ) , f ′ ( x ) ) = ( f (…

鸿蒙Next通过oss上传照片到阿里云

前言 最近在写纯血鸿蒙的APP,需要用到oss上传照片,之前的客户端 Android 和 IOS 都已经实现了,获取的阿里云签名的上传地址是服务端实现的,相信大部分公司都是这样的模式,服务端也是调用阿里云的SDK来实现的&#xff…

三维测量与建模笔记 - 5.3 光束法平差(Bundle Adjustment)

此篇笔记尚未理解,先做笔记。 如上图,在不同位姿下对同一个物体采集到了一系列图像, 例子中有四张图片。物体上某点M,在四幅图像上都能找到其观测点。 上式中的f函数是对使用做投影得到的估计点位置。求解这个方程有几种方法&…

C++学习0.2: RAII

引用: 【代码质量】RAII在C编程中的必要性_raii 在c中的重要性-CSDN博客 C RAII典型应用之lock_guard和unique_lock模板_raii lock-CSDN博客 前言: 常用的线程间同步/通信(IPC)方式有锁(互斥锁、读写锁、自旋锁)、…

【NLP 10、优化器 ① SGD 随机梯度下降优化器】

目录 一、定义 二、什么是梯度下降 三、SGD的工作原理 四、SGD的优化公式(更新规则) 五、SGD的优缺点 优点 缺点 六、如何选择学习率 七、使用SGD优化器训练一个简单的线性回归模型 祝你 随时攥紧偶然 永远拥有瞬间 —— 24.12.6 一、定义 随机梯度下降…

WiFi受限不再愁,电脑无网络快速修复指南

有时在试图连接WiFi时,会发现网络连接受限,或无法正常访问互联网。这种情况不仅影响了工作效率,还可能错过重要的信息。那么,究竟是什么原因导致了电脑WiFi连接受限呢?又该如何解决这一问题呢?小A今天就来教…

使用CancellationTokenSource来控制长时间sql查询中断

前端 <!-- 透明的覆盖层&#xff0c;显示在页面上方&#xff0c;包含进度条 --><Grid Visibility"{Binding IsLoading}" Background"Transparent" HorizontalAlignment"Stretch" VerticalAlignment"Stretch" ZIndex"1&…

java对整张图片添加水印(把水印铺满整张图片)

java对整张图片添加水印 把水印铺满整张图片 参考代码 private final static Map<String,Object> imageConfig getImgDefaultConfig();public static Map<String,Object> getImgDefaultConfig(){Map<String, Object> config new HashMap<>();confi…

微服务即时通讯系统(5)用户管理子服务,网关子服务

用户管理子服务&#xff08;user文件&#xff09; 用户管理子服务也是这个项目中的一个业务最多的子服务&#xff0c;接口多&#xff0c;但是主要涉及的数据表只有user表&#xff0c;Redis的键值对和ES的一个搜索引擎&#xff0c;主要功能是对用户的个人信息进行修改管理&#…