【第四阶段】kotlin语言的构造函数学习

1.主构造函数

package Kotlin.Stage4
//主构造函数,规范来说,都是增加_xxx的形式,临时的输入类型,不能直接用。需要接收下来,成为变量才能用。
class TestBase(_name:String,_sex:Char,_age:Int,_info:String){   //主构造函数var name=_nameget() = field //get不允许私有化private set(value) {  //私有化的set在调用时 不能访问,无法setfield=value}val sex=_sexget() = field//set(value){}  由于是只读val的 因此无法使用set函数var age=_ageget() = field +1var info=_infoget() = "【$field】"fun show(){//println(_name) _name临时输入类型 不能直接用,需要接收才能用println(name)println(sex)println(age)println(info)}
}fun main() {//创建对象var p=TestBase(_name = "kotlin",_age = 20,_sex = '男',_info = "我是语言")p.show()
}

执行结果
在这里插入图片描述
类似java中的this.nam=name
2.主构造函数里面定义属性
优化上述构造,一步到位

package Kotlin.Stage4class TestBase1(var name:String,val sex:Char,var age:Int, var info:String){   //主构造函数fun show(){println(name)println(sex)println(age)println(info)}
}fun main() {//创建对象var p=TestBase1(name = "kotlin",age = 20,sex = '男',info = "我是语言")p.show()
}

执行结果
在这里插入图片描述
3.次构造函数

constructor()
package Kotlin.Stage4
class TestBase3(name:String){ //主构造//次构造函数必须调用主构造,否在会报错。主构造统一管理,为了更好的初始化//2个参数的次构造constructor(name: String,sex:Char):this(name){println("2个参数的次构造函数:name=$name,sex=$sex")}constructor(name: String,sex: Char,age:Int):this(name){println("3个参数的次构造函数:name=$name,sex=$sex,age=$age")}constructor(name: String,sex: Char,age:Int,info:String):this(name){println("3个参数的次构造函数:name=$name,sex=$sex,age=$age,info=$info")}
}fun main() {//调用主构造TestBase3("java")//调用次构造TestBase3("kotlin",'m')TestBase3("kotlin",'m',25)TestBase3("kotlin",'m',25,"我是语言")}

执行结果
在这里插入图片描述
4.构造函数默认参数
如果用户不传入参数,可以直接使用默认值

package Kotlin.Stage4class TestBase4(name:String="java"){ //主构造//次构造函数必须调用主构造,否在会报错。主构造统一管理,为了更好的初始化//2个参数的次构造constructor(name: String="kotlin",sex:Char='w'):this(name){println("2个参数的次构造函数:name=$name,sex=$sex")}constructor(name: String="c",sex: Char='m',age:Int=25):this(name){println("3个参数的次构造函数:name=$name,sex=$sex,age=$age")}constructor(name: String="c++",sex: Char='m',age:Int=35,info:String="我是语言"):this(name){println("3个参数的次构造函数:name=$name,sex=$sex,age=$age,info=$info")}fun show(){println("主构造函数调用结果")}
}fun main() {//调用主构造TestBase4("java")//调用次构造TestBase4("kotlin",'m')TestBase4("kotlin",'m',25)TestBase4("kotlin",'m',25,"我是语言")//上述传入参数会覆盖默认参数TestBase4().show() //此种情况下会优先调用主构造
}

执行结果
在这里插入图片描述

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

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

相关文章

科学实验设计的关键要素:如何确保研究结果的可靠性和有效性

设计科学实验时,确保研究结果的可靠性和有效性是至关重要的。以下是一些关键要素: 1. 有明确的研究目的和问题:在设计实验之前,确保你清楚地了解你的研究目的和要解决的科学问题。这将有助于你设计出符合目标的实验方案。 2. 控…

深入理解算法的时间复杂度

文章目录 时间复杂度的定义时间复杂度的分类时间复杂度分析常见数据结构和算法的时间复杂度常见数据结构常见算法 常见排序算法说明冒泡排序(Bubble Sort)快速排序(Quick Sort)归并排序(Merge Sort)堆排序(Heap Sort) 时间复杂度的定义 时间复杂度就是一种用来描述算法在输入规…

9_19,洛谷刷题记录

要做一株小草&#xff0c;默默努力 求细胞数量 #include<iostream> using namespace std; //对每个点进行搜索&#xff0c;dfs/bfs&#xff0c;将搜过的点标记出来&#xff0c;然后记录次数 //搜索几次&#xff0c;就有几个细胞 const int N110; int g[N][N],st[N][N]; …

平均精度(AP)

什么是平均精度(AP) 平均精度 (AP)并不是精度 (P)的平均值。 平均精度 (AP) 是按类别计算的。 mAP&#xff08;mean average precision&#xff09;是一个平均值&#xff0c;常用作目标检测中的检测精度指标mAP 指标通过对于一个平均目标来检测任务中多个目标所对应不同 AP&a…

linux中的开发工具

在刚开始使用linux的时候&#xff0c;我们需要在系统上写一些简单的代码&#xff0c;来熟悉环境以及各种指令 并且熟悉属于linux的一套开发的环境&#xff0c;而这对于c来说需要三个软件就可以进行简单的编码 和使用&#xff0c;让我们来认识一下下列工具&#xff0c;以及工具的…

【链表】反转链表 II-力扣 92 题

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

elasticsearch bulk 批量操作

1&#xff1a;bulk 是 elasticsearch 提供的一种批量增删改的操作API bulk 对 JSON串 有着严格的要求。每个JSON串 不能换行 &#xff0c;只能放在同一行&#xff0c;同时&#xff0c; 相邻的JSON串之间必须要有换行 &#xff08;Linux下是\n&#xff1b;Window下是\r\n&#…

避雷器雷击计数器检验

试验目的 由于密封不良&#xff0c; 放电计数器在运行中可能进入潮气或水分&#xff0c; 使内部元件锈蚀&#xff0c;导致计数器不能正确动作&#xff0c; 因此需定期试验以判断计数器是否状态良好、 能否正常动作&#xff0c; 以便总结运行经验并有助于事故分析。 带有泄漏电…

Git学习笔记6

Github分支开发&#xff1a; 第1步&#xff1a;在github上创建一个新的dev分支&#xff1a; 更新了微信的PC版本&#xff0c;发现默认的箭头比以前加粗了&#xff0c;变得更好看了。 create branch: dev from master。 切换到该分支&#xff0c;看到里面的内容跟master分支的…

Spring Boot + Vue的网上商城之springsecurity+jwt+redis实现用户权限认证实现

Spring Boot Vue的网上商城之springsecurityjwtredis实现用户权限认证实现 在网上商城项目中&#xff0c;用户的安全性是非常重要的。为了实现用户权限认证和安全校验&#xff0c;我们可以使用Spring Security、JWT和Redis来实现。本篇博客将详细介绍后端和前台的实现过程&am…

Vue3 菜鸟入门(三)超详细:引用外部依赖、组件、路由

【学习笔记】Vue3 菜鸟入门&#xff08;三&#xff09;超详细&#xff1a;引用外部依赖、组件、路由 关键词&#xff1a;Vue 、Vue 3、Java、Spring Boot、Idea、数据库、一对一、培训、教学本文主要内容含Vue 基本框架 模板语法、指令计划1小时完成&#xff0c;请同学尽量提前…

计算机是如何工作的(上篇)

计算机发展史 世界上很多的高科技发明,来自于军事领域 计算机最初是用来计算弹道导弹轨迹的 弹道导弹 ~~国之重器,非常重要 两弹一星 原子弹,氢弹,卫星(背后的火箭发射技术) 计算弹道导弹轨迹的计算过程非常复杂,计算量也很大 ~~ 但是可以手动计算出来的(当年我国研究两弹一…

Python py文件打包成 exe文件

文章目录 安装 pyinstaller 模块pyinstaller 的使用pyinstaller 常用参数多文件打包 安装 pyinstaller 模块 pip install pyinstaller -i https://pypi.tuna.tsinghua.edu.cn/simple在 pyinstaller 模块安装成功之后&#xff0c;在 Python 的安装目录下的 Scripts 目录下会增加…

二叉树实现的相关函数

1.二叉树的创建 BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi) { if (n0||a[*pi] #){ (*pi);return NULL;}BTNode* root (BTNode*)malloc(sizeof(BTNode));root->_data a[(*pi)];root->_left BinaryTreeCreate(a, --n, pi);root->_right Binary…

解决VS Code安装远程服务器插件慢的问题

解决VS Code安装远程服务器插件慢的问题 最近想在服务器上做juypter notebook的代码运行&#xff0c;发现要给服务器安装Jupyter插件&#xff0c;但是安装速度奇慢无比&#xff08;因为服务器不连外网&#xff09;&#xff0c;一开始查看从VS Code插件市场下载插件的博客&…

ip地址怎么改网速快

在当今高度依赖互联网的时代&#xff0c;快速稳定的网络连接对于人们的生活和工作至关重要。然而&#xff0c;有时我们可能会遇到网络速度缓慢的问题。虽然更改IP地址并不能直接影响网络速度&#xff0c;但它可以成为改善网络连接的一种策略之一。虎观代理小二二将探讨如何通过…

Apache Spark 在爱奇艺的应用实践

01 Apache Spark 在爱奇艺的现状 Apache Spark 是爱奇艺大数据平台主要使用的离线计算框架&#xff0c;并支持部分流计算任务&#xff0c;用于数据处理、数据同步、数据查询分析等场景&#xff1a; 数据处理&#xff1a;在数据开发平台中支持开发者提交 Spark Jar 包任务或Spar…

Mac node nvm 切换版本,指定版本

一、Homebrew自动安装 // Homebrew安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" // Homebrew卸载 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/HomebrewUninstall.sh)&quo…

macOS 运行xxx.command文件提示”无法执行,因为您没有正确的访问权限“解决方法

使用苹果mac电脑运行.command文件时&#xff0c;是否遇到弹出”无法执行&#xff0c;因为您没有正确的访问权限“的窗口&#xff1f;遇到这种问题怎么解决呢&#xff1f;这里小编为大家带来了详细的解决方法&#xff0c;一起来看看吧&#xff01; 解决方法&#xff1a; 方法一…

matlab 间接平差法拟合二维圆

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。爬虫自重。 一、算法原理 圆的方程为: ( x - x 0 )