当前位置: 首页 > news >正文

Kotlin-面向对象

本片博客主要写创建对象,创建接口,创建抽象类,data关键字的作用

创建对象

如何声明一个对象,使用class关键字
格式为:
class 对象名字(对象属性名:属性类型…){}
如果对象没有函数的话,可以不写大括号
下面是声明一个对象的最简单写法

//定义一个对象,对象名字是People,包含三个属性,身份证号,姓名,年龄
class People(var idNumber:String, var name:String, var age:Int)

下面创建一个有函数(对象行为)的对象

class People(var idNumber:String, var name:String, var age:Int){fun learn(){println("$name 同学会学习")}fun dou(){println("$name 同学会逗笑")}fun song(){println("$name 同学会唱歌")}
}

下面说一下我对于对象里面创建变量的简单理解。
首先是Kotlin会默认创建构造函数和get()set()方法。所以不需要开发者自己写get()和set()方法。
如果非要自己写,我看了半天,想要实现不给默认值就定义一个变量,好像只能变成抽象类。
创建对象不在括号定义变量
我自己尝试创建对象不在括号定义变量。这里就直接报错了,IDEA给出了4个解决方案,1是设置默认值,2是变成抽象类里面的抽象变量,3是移动到构造函数中(就是移动到对象名后面的括号里面)4是添加get和set方法(也是需要设置默认值的)。

创建一个接口

首先确定一个概念,接口指的是事物的能力。
能力就是说能够干什么。
一般我是用来连接两个独立的对象互相调用函数使用的。
定义一个接口有几个注意事项:
1.接口没有构造函数,所以接口名后面不能有括号。但是可以定义一个没有默认值的变量。
2.定义一个接口使用interface关键字
3.接口里面的参数不能直接调用
下面看一下一个接口的简单写法

interface IHuman {var name:Stringfun say(){println("$name 在说话")}fun song()
}

创建一个抽象类

首先确定一个概念,抽象类指的是事物的本质。
本质就是说这个事物有固定属性。
1.抽象类必须用abstract 关键字
2.抽象函数必须没有函数体

 abstract class WoMan(var bb:String) {//抽象变量abstract var aa:Intfun goodGoodStudio(){println("好好学习")}//有abstract 标识的函数,必须没有函数体abstract fun dayDayUp()
}

继承和实现

实体对象父类是接口类,叫做“实现”
实体对象父类是抽象类,叫做“继承”
1.实体对象如果“继承”了抽象类,就必须重写没有默认值的抽象变量和抽象函数
2.实体对象如果“实现”了接口类,就必须重写接口类里面的所有变量和没有方法体的函数

class Lady(override var name: String, bb: String, override var aa: Int) : WoMan(bb),IHuman {override fun dayDayUp() {TODO("Not yet implemented")}override fun song() {TODO("Not yet implemented")}
}

总结:
1.接口类用interface 定义
2.抽象类用abstract 定义
3.重写变量和函数的关键字是override

data关键字

还有一个关键字,就是data,在定义对象的时候可以使用这个关键字修饰。
有以下注意事项:
1、主构造函数必须要至少有一个参数
2、主构造函数中的所有参数必须被标记为val或者var
3、数据类不能有以下修饰符:abstract,inner,open,sealed
有以下方便点。
1、toString函数会被复写为打印具体属性的值
2、新增components方法 , 获取构造函数中第几个参数的值
3、新增copy方法 , 可以用来修改具体属性的值
4、重写了hashCode方法 , 不再比较对象引用 , 而是比较对象的值

fun main(args: Array<String>) {var stu = Student("大班",12,170,56.0,"1202251993", "名字", 18)var stu1 = Student("大班",12,170,56.0,"1202251993", "名字", 19)//1.直接打印对象println(stu)//2.使用components 获取构造函数中第几个参数的值。//注意直接(.)不出来component,需要自己敲几个字母才能联想出来println(stu.component1())//3.调用copy函数复制一个对象给新的对象,而且可以复制的时候直接指定某个参数为新的值var stu2 = stu.copy(age = 30)println(stu2)//4.直接对比对象是否相等println(stu == stu1)
}

相关文章:

Kotlin-面向对象

本片博客主要写创建对象&#xff0c;创建接口&#xff0c;创建抽象类&#xff0c;data关键字的作用 创建对象 如何声明一个对象&#xff0c;使用class关键字 格式为&#xff1a; class 对象名字(对象属性名&#xff1a;属性类型…)&#xff5b;&#xff5d; 如果对象没有函数…...

循环、函数、对象——js基础练习

目录 一、循环练习 1.1 取款机案例 1.2 九九乘法表 1.3 根据数据生成柱形图 1.4 冒泡排序 1.6综合大练习 二、函数 2.1 转换时间案例 三、对象 1. 遍历数组对象 2. 猜数字游戏 3. 生成随机颜色 4. 学成在线页面渲染案例 一、循环练习 1.1 取款机案例 // 准备一个…...

精确控制 AI 图像生成的破冰方案,ControlNet 和 T2I-Adapter

ControlNet 和 T2I-Adapter 的突破性在哪里&#xff1f;有什么区别&#xff1f;其它为 T2I 扩散模型施加条件引导的相关研究ControlNet 和 T2I-Adapter 的实际应用效果如何&#xff1f;使用体验上&#xff0c;跟 SD原生支持的 img2img 有什么区别&#xff1f;ControlNet 在插画…...

让师生“不跑腿”,教育数据治理究竟有何魔力

当前&#xff0c;教育信息化新基础设施正在加紧建设&#xff0c;教育业务系统应用不断推进&#xff0c;各种软硬件平台源源不断地产生着教育数据。海量数据的汇聚和分析&#xff0c;能给教育系统带来什么&#xff1f;如何在教育数字化转型中&#xff0c;探索出基于数据驱动的新…...

力扣-寻找用户推荐人

大家好&#xff0c;我是空空star&#xff0c;本篇带大家了解一道简单的力扣sql练习题。 文章目录前言一、题目&#xff1a;584. 寻找用户推荐人二、解题1.正确示范①提交SQL运行结果2.正确示范②提交SQL运行结果3.正确示范③提交SQL运行结果4.其他总结前言 一、题目&#xff1a…...

mmdetection测试阶段

首先需要训练&#xff0c;训练会自动生成&#xff1a;latest.pth 权重文件 根据权重文件生成“.pkl”文件&#xff1b; 下面以faster_rcnn为例&#xff0c;–out是只生成的权重文件地址&#xff0c;result是生成的pkl文件名&#xff1b; python ./tools/test.py ./configs/…...

【无标题】10.货币系统

题目描述: 在网友的国度中共有 n 种不同面额的货币&#xff0c;第 i 种货币的面额为 a[i]&#xff0c;你可以 假设每一种货币都有无穷多张。为了方便&#xff0c;我们把货币种数为 n、 面额数组为 a[1..n] 的货币系统记作 (n,a)。 在一个完善的货币系统中&#xff0c;每一个非…...

【c++】类和对象6—运算符重载

文章目录加号&#xff08;&#xff09;运算符重载左移&#xff08;<<&#xff09;运算符重载递增&#xff08;&#xff09;运算符重载赋值&#xff08;&#xff09;运算符重载关系运算符重载函数调用运算符重载运算符重载概念&#xff1a; 对已有的运算符重新进行定义&am…...

【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

6、Fatfs系统移植

注意&#xff1a;挂载Fatfs笔记 Fatfs系统读写文件的时间是不固定的&#xff0c;随机性 搭载Fatfs的外设通信方式建议开启DMA方式&#xff0c;否则应避免中断打断时序&#xff0c;导致Fatfs出现FR_DISK_ERR&#xff08;A hard error occurred in the low level disk I/O layer&…...

【数据结构与算法】数据结构的基本概念,时间复杂度

&#x1f349;内容专栏&#xff1a;【数据结构与算法】 &#x1f349;本文脉络&#xff1a;数据结构和算法的基本概念&#xff0c;时间复杂度 &#x1f349;本文作者&#xff1a;Melon西西 &#x1f349;发布时间 &#xff1a;2023.2.21 目录 一、引入&#xff1a; 二、数据结…...

【Python】变量类型,赋值+多个变量赋值

嗨害大家好鸭~我是小熊猫(✿◡‿◡) 好像还有一些小伙伴还不是很会python的基础鸭~ 没关系啦~这不是还有我小熊猫嘛 ~ 源码资料电子书:点击此处跳转文末名片获取 Python 变量类型 变量是存储在内存中的值&#xff0c; 这就意味着在创建变量时会在内存中开辟一个空间。 基于…...

Qt基础之二十九:图形视图框架(Graphics View Framework)及其应用

无意中从网络获取一份俄罗斯方块源码,基于图形视图框架(Graphics View Framework)实现的。当然源码的核心从来都不是界面,而是方块的移动、变形和消除等算法。源码非常完整,注释详细,经改动后已能在Qt5中运行,下面是运行效果,背景音乐和音效也是有的。 一.效果 二.原理 …...

电商平台销量查询:2023年1月牛奶乳品热门排行榜

随着人们消费能力的提升以及健康意识的增强&#xff0c;牛奶乳品已经成为居民日常饮食中的重要组成部分&#xff0c;伴随人们整体消费的增长&#xff0c;牛奶乳品行业也越来越成熟。 今年1月份我国牛奶乳品行业的整体趋势如何呢&#xff1f;结合数据我们一同来分析&#xff01;…...

应用层协议

目录 应用层常见协议 DNS协议 前言 域名结构 DNS服务器分类 DNS的工作原理 DNS工作原理实例 DNS记录 DHCP协议 静态IP与动态IP DHCP协议好处 DHCP分配IP地址的4阶段 电子邮件 邮件的过程 电子邮件发送过程 pop协议特点 IMAP协议的特点 FTP协议 前言 FTP数据…...

Golang调用FFmpeg转换视频流

问题背景 问题背景是在&#xff0c;由于视频采集端使用的是H264编码采集的裸流&#xff0c;而网络流媒体大多是以FLV为主的直播方式进行的&#xff0c;为了实现实时直播&#xff0c;当前是打算直接使用FFmpeg将H264裸流实时转成FLV视频流。 为什么是使用FLV视频流呢&#xff0c…...

外卖点餐小程序开发

前言 餐饮行业是一个传统的行业。根据当前发展现状,网络信息时代的全面普及,餐饮行业也在发生着变化,单就点餐这一方面,利用手机点单正在逐步进入人们的生活。传统的点餐方式,不仅会耗费大量的人力、时间,有时候还会出错。小程序系统伴随智能手机为我们提供了新的方向。 手机…...

华为OD机试真题Python实现【猴子爬山】真题+解题思路+代码(20222023)

猴子爬山 题目 一天一只顽猴想要从山脚爬到山顶, 途中经过一个有n个台阶的阶梯, 但是这个猴子有个习惯,每一次只跳1步或3步 试问?猴子通过这个阶梯有多少种不同的跳跃方式 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 输入 输入只…...

wordpress 网站备份

一个网站从建站完成之日&#xff0c;备份的问题就要提上日程。不论是后期的更换服务器&#xff0c;更换域名&#xff0c;未知故障导致网站崩溃&#xff0c;数据丢失&#xff0c;只要我们有完整的备份&#xff0c;就能将损失降到最低。wordpress网站的备份方法多种多样&#xff…...

如何尽早解决需求变更隐患,降低项目延期风险?

频繁的需求变更&#xff0c;在早期我们应该如何尽早解决需求变更隐患&#xff0c;降低项目延期风险&#xff1f; 1、科学分析获取真实需求 建立需求基线 科学分析用户需求&#xff0c;颗粒度越小越好。需要提前建立需求基线&#xff0c;需求基线是需求变更的依据&#xff0c;并…...

这次终于选对了!2026年性价比拉满的专业AI论文网站

2026年AI论文写作工具已从“基础辅助”升级为融合多模态处理与学术合规的智能写作系统&#xff0c;核心评价维度涵盖文献真实性、格式合规性、长文本逻辑、查重降重、AIGC合规与跨语言支持。本次测评覆盖6款主流工具&#xff0c;测试场景包含中文与英文论文、全流程与专项功能、…...

Hunyuan-MT-7B真实效果:法院判决书专业术语(如‘举证责任倒置’)精准对应翻译

Hunyuan-MT-7B真实效果&#xff1a;法院判决书专业术语&#xff08;如‘举证责任倒置’&#xff09;精准对应翻译 1. 引言&#xff1a;当法律翻译遇上AI 想象一下这样的场景&#xff1a;一份涉及跨国纠纷的法院判决书需要翻译&#xff0c;里面充满了"举证责任倒置"…...

Oracle PL/SQL避坑指南:处理超多列(2K+)数据导出到CSV的Loop循环写法

Oracle PL/SQL超宽表处理实战&#xff1a;2000列数据高效导出方案 1. 超宽表数据处理的核心挑战 在制造业质量检测、金融风控报表等场景中&#xff0c;我们经常会遇到列数超过2000的超宽表数据处理需求。这类表格通常包含大量测试指标、传感器数据或多维分析结果&#xff0c;传…...

【chat】Verilog命名规范实战指南:从文件到模块的优雅编码

1. Verilog命名规范的重要性 刚开始接触Verilog的时候&#xff0c;我总觉得命名规范是个可有可无的东西。直到有一次接手同事的代码&#xff0c;看到一堆乱七八糟的命名&#xff0c;才深刻体会到规范的重要性。那感觉就像走进一个没有标签的仓库&#xff0c;想找什么都得一个个…...

如何快速掌握Sionna:下一代无线通信仿真的终极指南

如何快速掌握Sionna&#xff1a;下一代无线通信仿真的终极指南 【免费下载链接】sionna Sionna: An Open-Source Library for Next-Generation Physical Layer Research 项目地址: https://gitcode.com/gh_mirrors/si/sionna Sionna是一个基于TensorFlow的开源Python库&…...

麒麟V10 x86_64系统下Qt 5.12.7安装全攻略(附常见报错解决方案)

麒麟V10 x86_64系统Qt 5.12.7深度安装指南与疑难攻坚 国产操作系统生态的崛起让越来越多的开发者开始关注麒麟平台。作为一款基于Linux的国产操作系统&#xff0c;麒麟V10在x86_64架构下的表现尤为出色。本文将带你全面掌握Qt 5.12.7在麒麟V10 x86_64系统上的安装与配置技巧&am…...

视频内容自动打标:基于Emotion2Vec+ Large的语音情绪分析方案

视频内容自动打标&#xff1a;基于Emotion2Vec Large的语音情绪分析方案 1. 引言&#xff1a;语音情绪分析在视频内容管理中的价值 在视频内容爆炸式增长的今天&#xff0c;如何高效管理和检索海量视频素材成为内容平台面临的重大挑战。传统的人工打标方式不仅效率低下&#…...

FICO批量修改资产字段AR31:替代规则失效的排查与修复

1. 替代规则失效的典型场景 最近在SAP FICO模块实施过程中&#xff0c;遇到一个挺有意思的问题。财务部门需要对大批量资产进行成本中心调整&#xff0c;要求按照不同使用日期切换不同的成本中心。听起来是个很常规的需求对吧&#xff1f;我们按照标准流程在GGB1配置了替代规则…...

LeetCode 125. Valid Palindrome 题解

LeetCode 125. Valid Palindrome 题解 题目描述 给定一个字符串&#xff0c;验证它是否是回文串&#xff0c;只考虑字母和数字字符&#xff0c;可以忽略字母的大小写。 示例 1&#xff1a; 输入: "A man, a plan, a canal: Panama" 输出: true 解释&#xff1a;"…...

Z-Image-Turbo-辉夜巫女详细步骤:Xinference服务状态检查+Gradio端口映射配置

Z-Image-Turbo-辉夜巫女详细步骤&#xff1a;Xinference服务状态检查Gradio端口映射配置 1. 模型简介 Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型的LoRA版本&#xff0c;专门用于生成具有辉夜巫女风格的人物图片。这个模型通过Xinference框架部署&#xff0c;提供了稳定…...