类 kotlin(13)
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 关键字。
创建嵌套类、内部类和匿名内部类的类实例在嵌套类中有述。
类成员
类可以包含
构造函数和初始化块
函数
属性
嵌套类和内部类
对象声明
类 kotlin(13)的更多相关文章
- python __builtins__ complex类 (13)
13.'complex', 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数.如果第一个参数为字符串,则不需要指定第二个参数. class complex(ob ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-读取json封装成类(13)
把读取json数据的函数封装成类 # -*- coding: utf-8 -*- # @Time : 2020/2/12 16:44 # @File : do_json_13.py # @Author ...
- Kotlin学习笔记(9)- 数据类
系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正.如果你觉得我的文章对你有用,欢迎关注我,我们一起学习进步! Kotlin学习笔记(1)- 环境配置 Kotlin学习笔记(2)- 空安 ...
- Kotlin 数据类与密封类
数据类 Kotlin 可以创建一个只包含数据的类,关键字为 data: data class User(val name: String, val age: Int) 编译器会自动的从主构造函数中根据 ...
- 《python解释器源码剖析》第13章--python虚拟机中的类机制
13.0 序 这一章我们就来看看python中类是怎么实现的,我们知道C不是一个面向对象语言,而python却是一个面向对象的语言,那么在python的底层,是如何使用C来支持python实现面向对象 ...
- 用kotlin方式打开《第一行代码:Android》之开发酷欧天气(1)
参考:<第一行代码:Android>第2版--郭霖 注1:本文为原创,例子可参考郭前辈著作:<第一行代码:Android>第2版 注2:本文不赘述android开发的基本理论, ...
- 【Try Kotlin】Kotlin Koans 代码笔记
Kotlin Koans 心印 Introduction 1.Hello, world! Simple Functions Take a look at function syntax and mak ...
- kotlin官方文档-1.0入门
什么是Kotlin? 图片发自简书App Kotlin是JetBrains开发的基于JVM的语言,JetBrains想必大家应该很熟悉了,他们创造了很多强大的IDE,android studio谷 ...
- Kotlin学习笔记
Kotlin的注释 Kotlin 的代码注释和Java一模一样 Kotlin的运行方式也是先kotlinc生成字节码,再kotlin字节码 如果一行里面只有一条语句,那么可以不写分号.但如果打算在同一 ...
随机推荐
- IIS 6.0 PUT上传 任意文件创建漏洞
IIS 6.0 PUT上传 任意文件创建漏洞 require 1.IIS Server在Web服务扩展中开启了WebDAV. 2.IIS配置了可以写入的权限,包括网站 1.根目录 2.子文件夹 3.i ...
- python之file 方法
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 1 file.close() close() 方法用于关闭一个已打开的文件.关闭后的文件不能再进行读写操作, 否 ...
- Delphi MSComm控件事件的介绍
- Redis Sentinel机制与用法说明
本文来自 https://www.cnblogs.com/zhoujinyi/p/5569462.html 概述 Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Red ...
- Linux下kafka集群搭建
环境准备 zookeeper集群环境 kafka是依赖于zookeeper注册中心的一款分布式消息对列,所以需要有zookeeper单机或者集群环境. 三台服务器: 172.16.18.198 k8s ...
- Ubuntu 18.04 启动太慢不能忍
检查谁在搞鬼 $ systemd-analyze blame 结果 39.828s plymouth-quit-wait.service 39.311s apt-daily.service 30.93 ...
- Easy Populate批量管理下载产品数据为空的解决办法
把原来的先删除:http://aaaaacom/admin/easypopulate.php?langer=remove
- zencart分类页每页显示产品数量自定义选择的方法
zencart默认分类页每页显示产品数量是固定的,如何让顾客可以选择每页显示的产品的数量呢?效果图 方式一:全部展示 方式二:下拉菜单 修改方法 1.导入sql INSERT INTO configu ...
- yii\base\InvalidCallException The cookie collection is read only.
Invalid Call – yii\base\InvalidCallException The cookie collection is read only. 在使用Yii2进行cookie操作时会 ...
- MFC总结
1.首先是ListControl 简介: 列表视图控件List Control同样比较常见,它能够把任何字符串内容以列表的方式显示出来,这种显示方式的特点是整洁.直观,在实际应用中能为用户带来方便. ...
