5:kotlin 类(Classes )
kotlin支持面向对象编程,也有雷和对象的概念
要声明一个类需要使用class关键字
class Customer
属性(Properties)
- 可以在类名后边添加
(),在()里边声明属性
class Contact(val id: Int, var email: String)
声明了不可变属性
id和可变属性
- 可以在
()后边添加{},在{}中声明属性
class Contact(val id: Int, var email: String) {val category: String = ""
}
声明了不可变属性
id、可变属性category。category设默认值""
建议声明不可变属性,除非在创建对象后需要修改它
()内的一般称为头文件
在
()内声明属性时可以不使用val和var,但是类实例化后该属性不可见。见实例化
实例化(Create instance)
可以使用构造函数创建一个实例
默认情况下kotlin会使用头文件中定义的参数创建一个构造函数
fun main(){val contact1 = Contact(1, "123@mail.com", 0)val contact2 = Contact(2, order = 1)println(contact1.email) // 123@mail.comprintln(contact1.id) // 1println(contact1.category) // 122
// println(contact.order) // Unresolved reference: ordeprintln(contact2.email) // abc@mail.comprintln(contact2.id) // 2println(contact2.category) // 122
}
访问属性(Access properties)
实例化中contact1.email等方式就属于访问属性
模板字符串可以拼接实例的属性,注意使用
${}
println("邮箱是${contact2.email}") //邮箱是abc@mail.com
成员方法(Member functions)
成员函数要定义在类中,调用方法和访问属性类似
class Contact(val id: Int, var email: String = "abc@mail.com", order: Int) {val category: String = "122"fun printEmail() {println("邮箱是${email}")}
}fun main() {val contact = Contact(1, "123@mail.com", 0)contact.printEmail() // 邮箱是123@mail.com
}
数据类(Data classes)
数据类和普通类相似,但是会额外生成一些成员函数,这些成员函数格式化输出格式,对比实例,复制实例等。
使用`data class``声明一个数据类
data class User(val name: String, val id: Int)
| 方法 | 说明 |
|---|---|
| .toString() | 格式化输出实例的属性 |
| .equals() or == | 对实例作比较 |
| .copy() | 通过一个实例创建里一个实例 |
toString
data class User(val name: String, val id: Int)fun main(){val user = User("王老吉",1)println(user.toString()) // User(name=王老吉, id=1)
}
equals / ==
data class User(val name: String, val id: Int)fun main(){val user1 = User("王老吉",1)val user2 = User("王老吉",1)val user3 = User("王老吉",2)println(user1.equals(user2)) // trueprintln(user1 == user2) // trueprintln(user1.equals(user3)) // falseprintln(user1.equals("王老吉")) // false
}
copy
data class User(val name: String, val id: Int)fun main(){val user = User("王老吉",1)println(user.copy()) // User(name=王老吉, id=1)println(user.copy("加多宝")) // User(name=加多宝, id=1)println(user.copy(id=2)) // User(name=王老吉, id=2)
}
创建一个新的实例比修改原始实例更安全,因为原始实例的属性不会改变
相关文章:
5:kotlin 类(Classes )
kotlin支持面向对象编程,也有雷和对象的概念 要声明一个类需要使用class关键字 class Customer属性(Properties) 可以在类名后边添加(),在()里边声明属性 class Contact(val id: Int, var email: String)声明了不…...
达梦:【1】达梦常用操作
达梦:【1】达梦常用操作 一、登录达梦二、创建表空间及用户模式三、查看表空间、用户、模式四、系统查询五、角色管理六、数据库导入导出七、达梦数据库汉字存储八、根据表生成ctl控制文件九、本地连多台数据库(RAC) 一、登录达梦 ./disql username/passwordip:por…...
数字人透明屏幕的技术原理是什么?
数字人透明屏幕的技术原理主要包括人脸识别和全息影像技术。其中,人脸识别技术是通过摄像头捕捉游客的面部表情和动作,并将其转化为数据指令,以便与数字人物进行互动。而全息影像技术则是利用透明屏幕,通过全息投影的方式将数字人…...
提升APP软件的用户体验方法
提升APP软件的用户体验是确保用户满意度和应用成功的关键。以下是一些方法,可以帮助提升APP的用户体验,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.简洁的用户界面设计: …...
JVM运行时数据区域、对象内存分配、内存溢出异常总结
深入理解java虚拟机第二章 二、运行时数据区域2.2.1 程序计数器2.2.2 Java虚拟机栈2.2.3 本地方法栈2.2.4 Java堆2.2.5 方法区2.2.6 运行时常量池2.2.7 直接内存 三、HotSpot虚拟机对象解密2.3.1 对象的创建对象如何分配内存?对象的创建如何处理并发问题?…...
【C++设计模式】单例模式singleton
C 设计模式–单例模式singleton 单例模式 单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 优点:内存中只有一个实例,减少内存开销;避免对资源多重占用;设置全局访问点,严…...
CVPR 2023 精选论文学习笔记:Post-Training Quantization on Diffusion Models
基于MECE原则,我们给出以下四种分类依据: 1. 模型类型 生成模型用于生成与其训练数据相似的新数据。它们通常用于图像生成、文本生成和音乐生成等任务。语言模型用于理解和生成人类语言。它们通常用于机器翻译、聊天机器人和文本摘要等任务。其他模型用于各种任务,例如图像…...
Python基础语法之学习字符串快速格式化
Python基础语法之学习字符串快速格式化 一、代码二、效果 一、代码 # 通过f"{占位}"控制字符串快速格式化,不做精度控制 name "张三" age 13 money 12.5 text f"姓名是{name},年龄是{age},钱是{money}" print(text)二、效果 每一天都是一个…...
Ubuntu22.04 server版本关闭DHCP,手动设置ip
在Ubuntu 22.04 中,网络配置已迁移到 Netplan,因此可以使用 Netplan 配置文件来手动设置 IP 地址并关闭 DHCP。 以下是在 Ubuntu 22.04 上手动设置 IP 地址并禁用 DHCP 的步骤: 打开终端,使用 root 权限或 sudo 执行以下命令&…...
贪心算法(新坑)
贪心入门 概述: 贪心算法是一种在每一步选择中都采取当前最优解的策略,希望最终能够得到全局最优解的算法。简单来说,它会不断地做出局部最优的选择,相信通过这种选择最终能够达到全局最优。 举个例子来说明。假设你要从一个迷…...
C 语言头文件
C 语言头文件 头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它…...
MySQL中自增id用完怎么办?
MySQL中自增id用完怎么办? MySQL里有很多自增的id,每个自增id都是定义了初始值,然后不停地往上加步长。虽然自然数是没有上限的,但是在计算机里,只要定义了表示这个数的字节长度,那它就有上限。比如&#…...
C语言常见算法
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使…...
0-1背包的初始化问题
题目链接 这道题的状态转移方程比较易于确定。dp[i][j]表示能放前i个物品的情况下,容量为j时能放物品的数量(这道题歌曲数量对应物品数量,容量对应时间)。 技巧(收获) 二维dp数组可以视情况优化为一维dp数组…...
API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传
实现 //时间戳13位毫秒private function getMillisecond() {list($s1,$s2) explode( ,microtime());return (float)sprintf(%.0f,(floatval($s1) floatval($s2)) * 1000);}// 组装参数private function gysscPost1($url,$data){// $data[timestamp] 1694402111964;$data[tim…...
C语言-求阶乘序列前N项和
本题要求编写程序,计算序列 1!2!3!⋯ 的前N项之和。 输入格式: 输入在一行中给出一个不超过12的正整数N。 输出格式: 在一行中输出整数结果。 输入样例: 5输出样例: 153 #include "stdio.h" int main(){int n;int sum 0;scanf("%d",&a…...
3:kotlin 逻辑控制(Control flow)
像其他语言一样,kotlin也有循环和逻辑控制 条件判断(Conditional expressions) kotlin使用if和when来进行条件判断 如果纠结选择if还是when,建议使用when,因为它更能提高程序的健壮性 if 普通写法 fun main() {val…...
Linux系统之一次性计划任务at命令的基本使用
Linux系统之一次性计划任务at命令的基本使用 一、at命令介绍二、at命令的使用帮助2.1 at命令的help帮助信息2.2 at命令的语法解释 三、at命令的日常使用3.1 立即执行一次性任务3.2 指定时间执行一次性任务3.3 查询计划任务3.4 其他指定时间用法3.5 删除已经设置的计划任务3.6 显…...
记录:Unity脚本的编写8.0
目录 需求分析设计GUI包含账号和密码输入栏,包括登录和注册按键添加背景音乐编写脚本控制音乐 退出按钮编写脚本 背景图片完整代码 一个小demo,登录和注册的实现(包括GUI和数据库操控) 需求分析 自行设计GUI,要求 1.包…...
OpenCV | 模版匹配
import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 模版匹配 模版匹配和卷积原理很像,模版在原图像上从原点开始滑动,计算模版与(图像被模版覆盖的地方ÿ…...
2025零碳园区建设方案【附全文阅读】
2025零碳园区建设方案聚焦能源转型、产业优化、技术创新,通过政策支持、试点示范、多元融资推进,需因地制宜制定具体方案[17]。 关联阅读索引: 收藏不迷路——零碳智慧园区数字化学习索引【持续更新】-CSDN博客https://blog.csdn.net/cdfunlove/article/details/159959732?…...
OpenClaw+Phi-3-vision-128k-instruct:学术海报自动排版系统
OpenClawPhi-3-vision-128k-instruct:学术海报自动排版系统 1. 为什么需要学术海报自动化工具 作为一名经常参加学术会议的研究人员,我深刻体会到制作学术海报的痛苦。每次投稿被接收后,总要花上大半天时间折腾排版——调整图片位置、对齐文…...
SAP MTS计划策略实战:从策略10到52的配置差异与业务场景适配指南
1. SAP MTS计划策略入门:理解按库存生产的基础逻辑 刚接触SAP的生产计划模块时,我被各种计划策略搞得晕头转向。直到有次在汽车零部件厂实施项目,看到流水线上堆积如山的标准件,才真正理解**按库存生产(Make-To-Stock&…...
【JavaScript高级编程】拆解函数流水线 上犯
一、什么是setuptools? setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你: 定义 Python 包的元数据(如名称、版本、作者等)。 声明包的依赖项,确保你的包能够正确运行。 构建源代码分发包&…...
5个专业级步骤:NVIDIA Profile Inspector开源工具的显卡性能优化指南
5个专业级步骤:NVIDIA Profile Inspector开源工具的显卡性能优化指南 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector是一款免费开源的显卡配置工具,能…...
【基于Python技术的智慧中医商业项目】后端应用Articles代码实现(四)
后台文章接口一旦缺少统一的权限边界与查询约束,常见风险集中在未审核内容被暴露、分页与筛选口径不一致、详情阅读数更新链路出错,表现为列表数据异常、详情访问抖动、统计数据不可信。 内容围绕文章应用的 views 与 urls 两段链路拆解,聚焦分页与筛选参数、只读视图集的查…...
墨语灵犀赋能在线教育:AI助教自动批改编程作业实践
墨语灵犀赋能在线教育:AI助教自动批改编程作业实践 每次上完《Python入门》课,看着邮箱里堆积如山的作业压缩包,你是不是也感到一阵头疼?打开一份作业,从代码缩进看到变量命名,再从逻辑结构分析到运行结果…...
Qwen3-14B与卷积神经网络(CNN)结合:图像描述生成实战
Qwen3-14B与卷积神经网络(CNN)结合:图像描述生成实战 1. 从看图说话到智能描述 想象一下,你正在开发一个电商平台,每天需要处理成千上万的商品图片。传统的人工标注方式不仅耗时费力,而且难以保证一致性。…...
高效电源芯片ASP3605性能优化全解析,使用Django从零开始构建一个个人博客系统。
ASP3605电源芯片的基本特性 ASP3605是一款高效同步降压DC-DC转换器芯片,输入电压范围通常在4.5V至18V之间,输出电流能力可达5A。其开关频率可调节(300kHz至2MHz),支持轻载高效模式(如PFM)&#…...
C#开发者紧急通告:Blazor 2026正式版插件兼容性断崖预警(附72小时热修复方案)
第一章:C#开发者紧急通告:Blazor 2026正式版插件兼容性断崖预警(附72小时热修复方案) Blazor 2026正式版已于2026年4月1日全球发布,但微软官方同步披露:所有基于.NET 7及更早运行时构建的第三方组件库&…...
