Kotlin 中使用关键字 class 声明类class Invoice {}

类声明由类名、类头(指定其类型参数、主 构造函数等) 和由大括号包围的类体构成。类头和类体都是可选的;如果一个类没有类体,可以省略花括号。class MyClass

构造函数在 Kotlin 中的一个类可以有一个主构造函数和一个或多个次构造函数。主 构造函数是类头的一部分:它跟在类名(和可选的类型参数) 后。

 关键字class +类名+构造函数关键字constructor+(参数)

如果主构造函数没有任何注解或者可见性修饰符,可以省略这个 constructor 关键字。class Person(firstName: String) {}

主构造函数不能包含任何的代码。初始化的代码可以放 到以 init 关键字作为前缀的初始化块(initializer blocks) 中:class Customer(name: String) {  init {    logger.info("Customer initialized with value ${name}")  }} 事实上,声明属性以及从主构造函数初始化属性,Kotlin 有简洁的语法:class Person(val firstName: String, val lastName: String, var age: Int) {// ……} 没看明白,在构造方法声明的参数,属于类属性吗??????????????

构造方法的参数声明中 val 可以省略,如果不写默认val ;

证明上面的理解是对的。构造方法的参数就是类的属性。val声明就是不可变,var是可变。很奇葩!

与普通属性一样,主构造函数中声明的属性可以是 可变的(var ) 或只读的(val ) 。
如果构造函数有注解或可见性修饰符,这个 constructor 关键字是必需的,并且 这些修饰符
在它前面:
class Customer public @Inject constructor(name: String) {

  ……

}

次构造函数类也可以声明前缀有 constructor 的次构造函数:class Person {    constructor(parent: Person) {        parent.children.add(this)    }}如果类有一个主构造函数,每个次构造函数需要委托给主构造函数, 可以直接委托或者通过别的次构造函数间接委托。委托到同一个类的另一个构造函数 用 this 关键字即可:class Person(val name: String) {constructor(name: String, parent: Person) : this(name) {        parent.children.add(this)    }}如果一个非抽象类没有声明任何(主或次) 构造函数,它会有一个生成的 不带参数的主构造函数。构造函数的可见性是 public。如果你不希望你的类 有一个公有构造函数,你需要声明一个带有非默认可见性的空的主构造函数:类和继承class DontCreateMe private constructor () {} 注意:在 JVM 上,如果主构造函数的所有的参数都有默认值,编译器会生成 一个额外的无参构造函数,它将使用默认值。这使得 Kotlin 更易于使用像 Jackson 或者 JPA 这样的通过无参构造函数创建类的实例的库。class Customer(val customerName: String = ""){:.info}

 创建类的实例
要创建一个类的实例,我们就像普通函数一样调用构造函数:
val invoice = Invoice()
val customer = Customer("Joe Smith")
注意 Kotlin 并没有 new 关键字。
创建嵌套类、内部类和匿名内部类的类实例在嵌套类中有述。

类成员
类可以包含
构造函数和初始化块
函数
属性
嵌套类和内部类
对象声明


转载于:https://www.cnblogs.com/mamamia/p/8399283.html

类 kotlin(13)相关推荐

  1. 福建省2013高职单招计算机类试题,13年福建-高职单招-计算机类试题及答案.doc

    计算机类专业基础知识试题 第Ⅰ卷 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确的字母标号填涂在答题卡相应在位置上,每小题3分,共120分) 世界上第一台计算机(ENIAC)诞生的时 ...

  2. kotlin 类构造函数_Kotlin类– Kotlin构造函数

    kotlin 类构造函数 In this tutorial, we'll be discussing the Object Oriented Programming concepts of Kotli ...

  3. python __builtins__ complex类 (13)

    13.'complex', 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数.如果第一个参数为字符串,则不需要指定第二个参数. class complex(ob ...

  4. Kotlin 学习笔记(二)—— 数据类、密闭类、循环写法以及常用集合操作符

    在上篇笔记中,我们对 Kotlin 的基本类型.关键字.类与对象,以及与 Java 之间互调的内容有了一些认识,这篇笔记来看看 Kotlin 中几种特殊的类,以及集合相关的常用操作. 1. Kotli ...

  5. Kotlin系列之枚举类

    今天我们一起学习Kotlin中的枚举类. 还是以前的惯例,我们要对比Java和Kotlin中的枚举类来学习. Java中的枚举类 Java中的枚举类是使用enum关键字声明的,先说说Java枚举类的一 ...

  6. kotlin数据类_Kotlin数据类

    kotlin数据类 In this tutorial, we'll look at Kotlin Data Class. If you haven't read the Kotlin Classes ...

  7. Racket编程指南——13 类和对象

    13 类和对象 本章基于一篇论文[Flatt06]. 一个类(class)表达式表示一类值,就像一个lambda表达式一样: (class superclass-expr decl-or-expr . ...

  8. 三、kotlin的类和对象(二)

    theme: channing-cyan 继承★ kotlin 沿用了 java 的单继承系统, 不允许 c++ 的多继承出现, 但允许 kotlin 接口的多实现 open class Base(v ...

  9. 快速上手 Kotlin 开发系列之数据类和枚举

    本节讨论 Kotlin 的数据类.枚举类和密闭类. 数据类 数据类是 Kotlin 中很特殊的一种类,它可以将我们类中的成员变量自动的生成 getter/setter 方法,以及我们经常需要重写的 t ...

最新文章

  1. 将ADS1.2的工程迁移到KEIL上-基于2440
  2. Python 代码规范
  3. 百度搜索查询命令——组合型
  4. Load和Initialize往死了问是一种怎样的体验?
  5. 画出降维后的图片_有没有人能画出《三体》里太阳系被二维化的概念图?
  6. 解散了地图接口讨论群
  7. 皮一皮:这就是我的开发水平...
  8. jsp怎么连接mysql_jsp如何连接数据库!
  9. Druid如何自动根据URL自动识别DriverClass的
  10. 【测试点分析】1060 爱丁顿数 (25分)_21行代码
  11. 手写jwt框架SSO
  12. 如何用blend创建自定义窗口
  13. conda create出现连接问题_解决conda创建新环境慢 conda install 速度慢 报错问题
  14. Java企业级实战项目《瑞吉外卖》
  15. NAT穿透技术、穿透原理和方法详解
  16. 解决MacOS系统字体不识别STXingkai问题
  17. Oracle误删除dbf文件和表空间恢复
  18. 零基础入门CV - Task 03 字符识别模型.md
  19. 后缀001,002,003等的文件解压
  20. java程序员i5 i7_买电脑选择i5还是i7?很多人被忽悠了,专业人士说出了3点实话!...

热门文章

  1. linux测试硬盘的ipos,Linux/Unix平台data-recovery常用的工具
  2. java 字符串优化_Java字符串优化
  3. 基于病害区域图像的植物病害识别深度学习(创新点好理解)
  4. 深度卷积神经网络的水稻穗瘟病检测方法
  5. 【matlab】三维曲面(矩形网格---meshgrid)
  6. linux虚拟智能系统下载,RT-Thread v2.1.0alpha 技术预览,智能设备操作系统
  7. gerber文件怎么导贴片坐标_SMT贴片加工有哪些常用的名词
  8. python中re怎么念_Python中re(正则表达式)模块学习
  9. 透明色的rgb值是多少_一文掌握PPT主题色原理及使用技巧
  10. java docker 持续集成_最佳实战Docker持续集成图文详解