= =,感觉自己写的东西没什么人看呢= =,算了,本来就是自己写给自己看的东西,尽力了就行,也不指望像鸿神一样出名= =

1.

class User constructor(_nickname:String) {
val nickname:String
init{
nickname = _nickname
}
}
constructor用来开始一个主构造方法或从构造方法的声明。
init用来引入一个初始化语句块
最简单的表示方法
class User(val:nickname:String, 
val isSubscribed:Boolean=true)//可以设置默认值

***注意:如果所有的构造方法参数都有默认值,编译器会生成一个额外的不带参数的构造方法来使用所有的默认值。这可以让Kotlin使用库是变得更简单,因为可以通过无参构造方法来实例化类。

如果有父类:
classTwitterUser(nickname:String) :User(nickname){...}

如果没有给一个类声明任何的构造方法,将会生成一个不做任何事情的默认构造方法:
open class Button
那么如果子类没有提供任何的构造方法,必须显示地调用父类的构造方法
class RadioButton:Button()

如果不希望类被其他代码实例化,必须把构造方法标记为private
class Secretive private constructor() {}

大多数在Java中需要重载构造方法的场景都被Kotlin支持参数默认值和参数命名的语法含盖了。
***不要声明多个从构造方法用来重载和提供参数的默认值,取而代之的是应该直接表明默认值。
open class View{
constructor(ctx:Context) {
//some code
}
constructor(ctx:Context, attr:AttributeSet){
//some code
}
}

从一个构造方法中调用你自己中的另外一个构造方法
class MyButton:View {
constructor(ctx:Context):this(ctx, MY_STYLE) {
//...委托给父类
}
constructor(ctx:Context, attr:AttributeSet):super(ctx, attr) {
//...委托给自己的其他构造方法
}
}

2.通过getter或者setter访问支持字段
我们希望在任何对储存在属性中的数据进行修改时输出日志,声明了一个可变属性并且在每次setter访问时执行额外的代码。
class User(val name:String) {
var address:String = "unspecified"
set(value:String) {
println("""
Address was changed for $name:
"$field" -> "$value".""".trimIndent())
field=value
}
}
在setter的函数体,使用特殊的标识符field来访问支持字段的值

3.修改访问器的可见性
class LengthCounter{
var counter:Int = 0
private set
fun addWord(word:String) {
counter+=word.length
}
}

4.==运算符是比较两个对象的默认方法:本质上说它就是通过调用equals来比较两个值的。
println(client1 == client2)

5.Kotlin中的is检查是java中的instanceof的模拟,用来检查一个值是否为一个指定的类型。

6.hashCode()
>>>val processed = hashSetOf(Client("Alice", 342562))
>>println(precessed.contains(Client("Alice", 342562)))
false

原因就是Client类缺少了hashCode方法,因此他违反了通用的hashCode契约:如果两个对象相等,他们必须有着相同的hash值

Kotlin学习 PART 3:类,对象和接口相关推荐

  1. Java大数据学习第六天------面向对象 类 对象 封装

    面向过程: ​ 强调的是过程, 面向对象: ​ 强调的是结果,只需要关注结果就好. 面向对象的三大特征: 封装: 把相关的数据封装成一个"类"组件 继承: 是子类自动共享父类属性和 ...

  2. 【学习笔记】类对象的内存释放

    类对象的内存释放 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 类对象与其他数据变量一样,都是要占据程序内存的,如果确定后续程序不会再使用对象实例,我们就可以删除对 ...

  3. kotlin学习之嵌套类和内部类(六)

    目录 1. Java中的内部类和嵌套类 2. kotlin中的嵌套类和内部类 1. Java中的内部类和嵌套类 //内部类,内部类持有了外部类的引用,所以在内部类中可以调用外部类的方法 public ...

  4. Kotlin学习笔记-3 --- 类与对象

    文章参考 class KotlinClass {} /*** 空类 */ class EmptyClass 类的修饰符 1)classModifier: 类属性修饰符,标示类本身特性 abstract ...

  5. Kotlin学习二:类与对象

    类 创建类 MyUtils,里面有一个值和获取的方法: class MyUtils {var a = 0fun get(): Int {return a} } 在 MainActivity 类中创建工 ...

  6. Kotlin学习笔记(六) 伴生对象 对象表达式

    2019独角兽企业重金招聘Python工程师标准>>> 一,伴生对象 1.类似于java中的静态方法static class TestCompanion{//伴生对象使用compan ...

  7. Kotlin学习(11)→抽象类、接口、接口代理

    文章目录 1.抽象类 2.接口 3.接口代理 在期待着郭霖先生的<第一行代码(第三版)>时,意识到自己需要补充必要的Kotlin知识,现在通过写博客进行分享,争取拿到书之后早日上手. 使用 ...

  8. 初探swift语言的学习笔记四(类对象,函数)

    2019独角兽企业重金招聘Python工程师标准>>> swift扩展了很多功能和属性,有些也比较奇P.只有慢慢学习,通过经验慢慢总结了. 下面将初步学习一下类的写法. 码工,最大爱 ...

  9. kotlin学习之数据类(七)

    目录 1. 概念 2. 自动生成函数 3. 排除元素 4. 复制 1. 概念 Kotlin的数据类相当于Java的Bean,Java的一个类都需要写getter和setter方法,代码十分臃肿,而且每 ...

  10. Kotlin学习历程——对象声明与伴生对象

    Kotlin语言中文站 对象声明 如下代码写法称为对象声明: object UserInfoManager {//用户类型val userType : Int = 0//获取用户登录信息fun get ...

最新文章

  1. C#在WinFrom中Get/Post请求及QQ农场Cookie保存
  2. 在Centos中安装aria2c
  3. linux kernel 中mdelay() 与msleep()的区别
  4. 数据中心如何减少人为故障发生率
  5. Maven学习(二) -- 坐标和依赖
  6. java nio的使用
  7. 软件项目周报_有关细节、效率、周报和扯淡
  8. 在 Domoticz 中添加插座开关
  9. 一个迷失了本性的聊天软件,初衷不在,何其悲伤
  10. 编译lua5.3.5报错:libreadline.so存在多处未定义的引用
  11. Chrome 下载文件出现已禁止
  12. 模拟电路电源芯片PROTUES
  13. 计算机中级培训感言,计算机中级培训培训感言
  14. 紫光华宇拼音输入法使用技巧
  15. weblogic windows 打补丁_weblogic的版本及打补丁
  16. Vim编辑器基本操作
  17. 找不到 blog.csdn.net 的服务器 DNS 地址
  18. FastDFS和GFS以及NFS的对比
  19. 师徒结对活动记录表计算机,幼儿园师徒结对活动记录表
  20. 微软商店、应用、网站无法登录

热门文章

  1. JAVA中throw用法例子,Java Optional orElseThrow()用法及代码示例
  2. 高中计算机会考优秀网,北京高三体育会考成绩255分为优秀
  3. Java泛型详解-史上讲解最详细的,没有之一
  4. android语言 选择题,Android N以编程方式更改语言
  5. java中executorservice_java中ExecutorService创建方法总结
  6. mysql获取当月数据_MySQL中获取天、周、月等数据
  7. mysql mydumper_采用mydumper对MySQL部分数据库进行热备
  8. git fetch -p 获取远程仓库的新分支以及删除远程仓库已删除的分支
  9. Keras【Deep Learning With Python】机器学习和线性回归
  10. python【力扣LeetCode算法题库】46- 全排列