Kotlin笔记(七)类成员(属性,内部类,匿名内部类)
来源:互联网 发布:淘宝女模特好漂亮 编辑:程序博客网 时间:2024/05/22 03:26
类成员
- 构造函数和初始化块 (第六章)
- 函数 (第五章)
- 属性
- 嵌套类和内部类
- 对象声明
属性
声明属性 :Kotlin的类可以有属性。 var 声明为可变的,val为只读的
声明一个属性的完整语法是
var <属性名称>[: <属性类型>] [= <初始值>] [<getter>] [<setter>]//例如class Address { var name: String = …… var street: String = …… var city: String = …… var state: String? = …… var zip: String = ……}
其初始值、getter 和 setter 都是可选的。属性类型如果可以从初始器 (或者从其 getter 返回值,如下文所示)中推断出来,也可以省略。
var initialized = 1 // 类型 Int、默认 getter 和 setter
我们可以编写自定义的访问器,非常像普通函数,刚好在属性声明内部。
//这里有一个自定义 getter 的例子:val isEmpty: Boolean //可以理解为get()方法 = 语句(this.size == 0 结果是true或false再把结果赋值给get()方法) get() = this.size == 0//一个自定义的 setter 的例子:var stringRepresentation: String get() = this.toString() set(value) { setDataFromString(value) // 解析字符串并赋值给其他属性 }
按照惯例,setter 参数的名称是 value,可以选择一个不同的名称。
自 Kotlin 1.1 起,如果可以从 getter 推断出属性类型,则可以省略属性类型:
// 从结果(this.size == 0)可以知道结果是boolean值 所以省略了属性的数据类型 isEmpty是属性的名称val isEmpty get() = this.size == 0
如果你需要改变一个访问器的可见性或者对其注解,但是不需要改变默认的实现, 你可以定义访问器而不定义其实现:
var setterVisibility: String = "abc" private set // 此 setter 是私有的并且有默认实现var setterWithAnnotation: Any? = null @Inject set // 可以用 Inject 注解此 setter
访问属性的方式 :名称.属性名称
//一个函数中的参数是Address类型的名称为addressfun copyAddress(address: Address): Address { //创建一个Address类型的对象名为result的引用 //注意:Kotlin中没有“new”关键字 val result = Address() result.name = address.name // 将调用访问器 result.street = address.street // …… return result}
嵌套类
类可以嵌套在其他类中
class Outer { private val bar: Int = 1 class Nested { fun foo() = 2 }}val demo = Outer.Nested().foo() // == 2
内部类
类可以标记为 inner 以便能够访问外部类的成员。内部类会带有一个对外部类的对象的引用:
class Outer { private val bar: Int = 1 inner class Inner { fun foo() = bar }}val demo = Outer().Inner().foo() // == 1
匿名内部类
使用对象表达式创建匿名内部类实例:
window.addMouseListener(object: MouseAdapter() { override fun mouseClicked(e: MouseEvent) { // …… } override fun mouseEntered(e: MouseEvent) { // …… }})
如果对象是函数式 Java 接口(即具有单个抽象方法的 Java 接口)的实例, 你可以使用带接口类型前缀的lambda表达式创建它:
val listener = ActionListener { println("clicked") }
阅读全文
0 0
- Kotlin笔记(七)类成员(属性,内部类,匿名内部类)
- 内部类---(静态内部类、成员内部类、匿名内部类、局部内部类)
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Kotlin编程之嵌套类,内部类,匿名内部类
- Kotlin之匿名内部类
- JAVA--成员内部类 局部内部类 匿名类
- java 成员内部类 局部内部类,匿名内部类
- java内部类,内部类的共性,成员内部类,方法内部类匿名内部类,静态嵌套类,不解
- Java 各种内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java 内部类(分四种:成员内部类、局部内部类、静态内部类和匿名内部类)
- Java基础_内部类:静态内部类、成员内部类、局部内部类、匿名内部类 (转)
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java基础_内部类、静态内部类、成员内部类、局部内部类、匿名内部类 (转)
- Java 内部类详解(成员内部类、静态内部类、局部内部类、匿名内部类)
- 匿名内部类笔记
- 匿名内部类笔记
- 匿名类、内部类、匿名内部类
- 匿名类、内部类、匿名内部类
- leetcode561. Array Partition I
- 折半插入排序
- 如何创建快速联系人标记
- [Leetcode]_32 Longest Valid Parentheses
- Scala程序设计原则:Least Power
- Kotlin笔记(七)类成员(属性,内部类,匿名内部类)
- 170606 逆向-CrackMe之015
- 项目中身份证有效期的判断规则
- 现代软件工程-构建之法(第三单元)
- 图形性能和网络性能(对UPD性能有实测数据支持)
- 聚类个数的判断
- SSH物流开发系统设计:业务人员的增删改查
- windows下配置mycat,实现mysql数据库的读写分离!
- POJ-1201 (差分约束系统)