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.xdnf.cn/news/36038.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

团队管理中如何做好目标管理

团队管理中的目标管理是确保团队高效运行的核心要素之一。 在目标管理中,清晰的目标设定、合理的资源分配、实时的跟踪与反馈机制是成功的关键。首先,设定SMART目标(具体、可衡量、可达成、相关性强、时间限定)能够有效聚焦团队的…

【力扣热题100】—— Day4.反转链表

你不会永远顺遂,更不会一直年轻,你太安静了,是时候出发了 —— 24.12.2 206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出&…

【AWS re:Invent 2024】一文了解EKS新功能:Amazon EKS Auto Mode

文章目录 一、为什么要使用 Amazon EKS Auto Mode?二、Amazon EKS自动模式特性2.1 持续优化计算成本2.2 迁移集群操作2.3 EKS 自动模式的高级功能 三、EKS Auto 集群快速创建集群配置四、查看来自 API 服务器的指标五、EKS 相关角色权限设置六、参考链接 一、为什么…

记事本建java及java命名规范

1.桌面开发:c# 2. 记事本建java: 以class的名称(类名)为名,名称.java 编译jdk:javac 名称.java 调动运行jre : java 名称 查看名称.java里面的内容:cat 名称.java java 的命名规范 大驼峰(每个单词首…

过程管理系统(源码+文档+部署+讲解)

本文将深入解析“过程管理系统”的项目,探究其架构、功能以及技术栈,并分享获取完整源码的途径。 系统概述 过程管理系统是一款专为工业设计的综合管理平台,旨在通过集成各种管理流程和功能模块来提高管理效率和安全性。系统提供了从登录系…

期权懂|个股期权交割操作流程是什么样的?

期权小懂每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 个股期权交割操作流程是什么样的? 一、行权申报: 期权买方在行权日通过其经纪商提交行权指令,表明其决定行使期权权利。 二、行权匹配&#xf…

智能仓储:入库业务流程介绍

01 入库流程 入库业务流程,常见过程是这样的: 创建PO单 > 创建到货清单 > 核对货物 > 入库质检 > 货物贴标签 > 上架 > 库存同步 1、创建PO单 po单指的是的采购订单,比如采购了一车货品,这车的货品可以理解…

MySQL并发控制(一):幻读

假设有如下表结构: CREATE TABLE t(id int(11) NOT NULL,c int(11) DEFAULT NULL,d int(11) DEFAULT NULL,PRIMARY KEY (id),KEY c (c) ) ENGINEInnoDB;insert into t values(0,0,0),(5,5,5),(10,10,10),(15,15,15),(20,20,20),(25,25,25); 问:如果执行…

Ubuntu22.04中mysql8 rpm安装

1、安装依赖 sudo apt update sudo apt -y dist-upgrade sudo apt -y install vim net-tools wget gcc make cmake lrzsz sudo apt -y install libmecab2 libjson-perl 2、下载rpm文件 https://dev.mysql.com/downloads/mysql/ https://cdn.mysql.com//Downloads/MySQL-8.0/m…

Intel 性能分析“全家桶” For HPC(一)

本系列是对于HPC应用性能分析涉及的主要方法论及Intel主流工具分享。理解这些方法论将有助于对性能分析结果的理解。同时方法论也可以推广到其他的硬件平台的分析上。除此之外后面也将介绍如何用Vtune, Advisor以及ITAC进行性能分析,以及在性能分析过程中这三种性能…

Qwen1.8B大模型微调流程

提示:本篇笔记是在微调大模型为法律相关模型的教程下记录的,参考的讲解视频在B站上,一搜微调大模型为法律大模型就有很多视频。 文章目录 1. 数据集1.1 数据下载1.2 数据格式转换 2. 模型训练2.1 安装依赖2.2 模型训练 3. 模型推理3.1 LoRA模…

第十六章 使用 iSCSI 服务部署网络存储

1. iSCSI 技术介绍 硬盘是计算机硬件设备中重要的组成部分之一,硬盘存储设备读写速度的快慢也会对服务器的整体性能造成影响。硬盘存储结构、RAID 磁盘阵列技术以及LVM 技术等都是用于存储设备的技术,尽管这些技术有软件层面和硬件层面之分&#xff0c…

【js面试题】JavaScript 中箭头函数与普通函数的深度剖析

在 JavaScript 编程的世界里,函数是极为重要的组成部分。而随着 ES6 的出现,箭头函数成为了 JavaScript 函数家族中的新成员。它与传统的普通函数有着诸多的不同之处,这些差异深刻地影响着我们编写代码的方式以及代码的执行逻辑。本文将对 Ja…

【漫话机器学习系列】Adaboost算法

Adaboost(Adaptive Boosting)是一种经典的集成学习方法,主要思想是通过将多个弱学习器(通常是简单模型,如决策树桩)加权组合,来提升整体模型的预测能力。Adaboost 是一种自适应的学习方法&#…

SQL靶场第四关

sql靶场第四关攻略 输入?id1页面正常 输入?id1发现页面也正常 输入?id1",页面异常,说明存在sql报错注入 在输入?id1" --页面还是报错 1.判断闭合点 我们需要找到闭合点,尝试在双引号后面加个) 输入?id1") --我们发现…

Trunk链路操作题

Trunk链路操作题 论证:

Alogrithm:三色棋

1. 说明 三色旗的问题最早由 E.W.Diikstra 所提出,他所使用的用语为 Dutch Nation Flag(Dijkstra 为荷兰人),而多数的作者则使用 Three-Color Flag 来称之。 假设有一条绳子,上面有红、白、蓝三种颜色的旗子&#xff0…

需要排序的子数组

题目描述 给定一个无序数组arr,求出需要排序的最短子数组长度 要求:O(N) 如输入:arr{2,3,7,5,4,6},返回4,因为只有{7,5,4,6}需要排序。 分析 以{2,3,7,5,4,6,8,9}为例: 前端小于最小波谷(3…

Python酷库之旅-第三方库Pandas(154)

目录 一、用法精讲 701、pandas.Timestamp.utcnow方法 701-1、语法 701-2、参数 701-3、功能 701-4、返回值 701-5、说明 701-6、用法 701-6-1、数据准备 701-6-2、代码示例 701-6-3、结果输出 702、pandas.Timestamp.utcoffset方法 702-1、语法 702-2、参数 70…

如何启动神通数据库?神通数据库的启动方式一共有几种?

简单总结,神通数据库启动有三种方式: 1、dba管理工具方式 2、服务方式 (1)service oscardb_OSRDBd restart (2)/etc/init.d/oscardb_OSRDBd restart (3)systemctl start oscardb_OS…