文章目录

  • 一、主构造器
  • 二、第二构造器
  • 三、单例
  • 四、默认参数

一、主构造器

  • 在Kt中允许定义一个主构造器(primary constructor )和若干个第二构造器(secondary constructor)
  • 主构造器是类头的一部分,紧跟在类名后面,构造器参数是可选的
class Person constructor (firstName : String)
{}
  • 如果主构造器没有任何注释(annotation)或修饰器(modifier)constructor可以直接省略
class Person  (firstName : String)
{}

主构造器的初始化

 class Person constructor (firstName : String){//实现主构造器 进行初始化var name = firstName //主构造器的参数还可以用于对类属性的初始化init {println(firstName)}}

Attention:

-》var val关键字也可以用于主构造器的参数,如果使用var,参数对于构造器来说是变量,
可以在构造器内部修改变量的值。
-》如果使用val声明,参数就变成了常量,在构造器内部不能修改该参数的值
-》即使使用var声明变量,在构造器内部修改参数变量值后,并不会把修改的值传到对象外部

二、第二构造器

  Kt类除了可以声明一个主构造器外,还可以声明若干个第二构造器,第二构造器在类中声明,前面必须加constructor关键字

class Animation {//第二构造器需要在类中声明,前面必须加constructor关键字constructor(color: String)  {priintln(color)}
}
  • 如果类中声明了主构造器,那么所有第二构造器都需要在声明后面调用主构造器
  • 或通过另外一个第二构造器间接调用主构造器
class QACommunity (var url:String){// 主构造器实现部分init {println(url)}//第二构造器(通过this直接调用主构造器)constructor(value : Int) : this("geekori.com"){println(value)}//第二构造器(通过this直接调用主构造器)constructor(description : String,url:String):this("["+ url+"]"){println(description + ":"+ url)}//第二构造器(通过this调用第二构造器,并间接调用主构造器)constructor():this(20){println("https://geekori.com")}}

三、单例

无论是自动参数的构造器还是自己定义的构造器, 外部都是可以访问的,是public类型的, 如果要满足特殊需求,如实现单例模式(Singleton),可以使用private声明主构造器和第二构造器。

class Singleton private constructor()
{public var value : Singleton ? = nullprivate object mHolder {val INSTANCE = Singleton()}companion object Factory{fun getInstance() : Singleton{return  mHolder.INSTANCE}}
}

这里可以对比一下JAVA的单例模式

public class SingleInstance {public static SingleInstance mInstance = null;private SingleInstance(){}public static SingleInstance getInstance(){return mInstance = new SingleInstance();}
}

打印出为同一个对象

四、默认参数

class Customer (val customerName : String = "Bill",var age : Int = 14 )
{}

Kt学习笔记(三) 构造器相关推荐

  1. J2EE学习笔记三:EJB基础概念和知识 收藏

    J2EE学习笔记三:EJB基础概念和知识 收藏 EJB正是J2EE的旗舰技术,因此俺直接跳到这一章来了,前面的几章都是讲Servlet和JSP以及JDBC的,俺都懂一些.那么EJB和通常我们所说的Ja ...

  2. tensorflow学习笔记(三十二):conv2d_transpose (解卷积)

    tensorflow学习笔记(三十二):conv2d_transpose ("解卷积") deconv解卷积,实际是叫做conv_transpose, conv_transpose ...

  3. Ethernet/IP 学习笔记三

    Ethernet/IP 学习笔记三 原文为硕士论文: 工业以太网Ethernet/IP扫描器的研发 知网网址: http://kns.cnki.net/KCMS/detail/detail.aspx? ...

  4. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  5. 吴恩达《机器学习》学习笔记三——多变量线性回归

    吴恩达<机器学习>学习笔记三--多变量线性回归 一. 多元线性回归问题介绍 1.一些定义 2.假设函数 二. 多元梯度下降法 1. 梯度下降法实用技巧:特征缩放 2. 梯度下降法的学习率 ...

  6. Python基础学习笔记三

    Python基础学习笔记三 print和import print可以用,分割变量来输出 import copy import copy as co from copy import deepcopy ...

  7. Mr.J-- jQuery学习笔记(三十二)--jQuery属性操作源码封装

    扫码看专栏 jQuery的优点 jquery是JavaScript库,能够极大地简化JavaScript编程,能够更方便的处理DOM操作和进行Ajax交互 1.轻量级 JQuery非常轻巧 2.强大的 ...

  8. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  9. ROS学习笔记三:创建ROS软件包

    ,# ROS学习笔记三:创建ROS软件包 catkin软件包的组成 一个软件包必须满足如下条件才能被称之为catkin软件包: 这个软件包必须包含一个catkin编译文件package.xml(man ...

  10. Python学习笔记三之编程练习:循环、迭代器与函数

    Python学习笔记三之编程练习 1. 编程第一步 # 求解斐波纳契数列 #/user/bin/python3#Fibonacci series:斐波那契数列 #两个元素的总和确定了下一个数 a,b= ...

最新文章

  1. 织梦同步静态文件到服务器,静态网站添加到织梦
  2. web前端学习day_03:JavaScript:如何使用/ 语法/ 方法/ NaN/ js对象分类/ BOM浏览器相关/ 事件/ DOM文档对象模型
  3. 一元享移动怎么样_移动大王卡千万别买!!!
  4. leetcode算法题--逆波兰表达式求值
  5. EhLib控件在windows 2003 中delphi 安装问题解决办法
  6. CentOS6.8安装Python3.6.3
  7. 天题系列: Candy
  8. 如果编程替换成中文就会怎样? 程序员看了表示头疼
  9. usb接口多少钱_工控机一般有多少个串口
  10. 数字孪生+交通,到底有啥用?
  11. mysql输出重定向_将MySQL输出内容写入(重定向到)文件
  12. ubuntu16.04中文乱码解决方案
  13. python 获取照片拍摄时间_Python实现获取照片拍摄日期并重命名的方法
  14. 用牛顿法求方程的根的c语言编程,用牛顿迭代法和二分法求方程的根【C语言】...
  15. 长江浪漫水城2008年度营业时间和票价
  16. java 占位符_Java重要知识点
  17. scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化
  18. 给别的计算机硬盘装系统,在一台计算机上装好系统的硬盘移到另一个电脑能用吗?...
  19. PAT Basic 1068 万绿丛中一点红
  20. 教程:深入理解Flash的沙箱 – Application Domains

热门文章

  1. Windows CE大排档 资源汇总
  2. 我在机缘巧合下发现豆瓣主站存储型XSS
  3. js中搜索栏中的搜索图标(以及其他各种图标)怎么写?Fontawesome
  4. 机械师用u盘重装系统
  5. 【常用运维技巧】Linux文件创建的N种方法
  6. ASEMI代理长电MCR100-6可控硅的性能与应用分析
  7. 好用的电竞蓝牙耳机推荐
  8. 魅蓝note3 android6.0,魅蓝E和魅蓝note3买哪个比较好 魅蓝note3和魅蓝E全方位区别对比深度评测图解...
  9. httpd搭建本地yum源
  10. vue百度地图三级缩放,实现地图找房功能,vue-baidu-map