Kotlin属性和字段与基本语法

本文介绍了Kotlin的属性和字段,包括声明属性、getter和setter、备用字段、编译时常量、顶级属性以及延迟初始化属性。此外,还详细讲解了Kotlin的基本语法,如定义包名、函数、局部变量、注释、字符串模版、条件表达式、可空变量检查等,帮助读者深入理解Kotlin语言。
摘要由CSDN通过智能技术生成

Kotlin属性和字段与基本语法

Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源。与Java相比,Kotlin的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与Java高度可互操作,可以同时用在一个项目中。

这里写图片描述

Kotlin属性和字段

Declaring Properties 声明属性

Kotlin中使用var关键字声明可变属性,或者用val关键字声明只读属性,属性的类型在后面,变量名在签名,中间加冒号和空格。

public class Student {
    public var name: String = ...
    public var glass: String = ...
    public var city: String = ...
    public var state: String? = ...
    public var grade: String = ...
}

只需要将成员变量定义成是 public 变量,编译器会自动生成 getter 和 setter 方法。所以上面的属性编译器默认添加了getter 和 setter 方法。

调用的时候与Java一样,通过变量名直接使用一个属性

fun recordStudent(student: Student): Student {
    val result = Student() // there's no 'new' keyword in Kotlin
    result.name = student.name
    result.street = student.glass
    // ...
    return result
}

上面对属性的访问,并不是像Java里面一样,直接访问属性的本身,而是默认调用了getter 和 setter 方法。

Getter和Setter

语法中的初始化语句,getter和setter都是可选的,声明属性的完整语法如下:

var <propertyName>: <PropertyType> [= <property_initializer>]
    [<getter>]
    [<setter>]

其中initializer, getter 和 setter都是可选的。var是允许有getter 和 setter方法,如果变量是val声明的,它类似于Java中的final,所以如果以val声明就不允许有setter方法。

自定义访问器(getter)和自定义setter,setter的参数名默认是value,也可以自定义

val isClassSix: Boolean //val 类似于Java中的final
    get() = this.class == 6

var stringRepresentation: String
    get() = this.toString()
    set (value) {
        setDataFormString(value) // 格式化字符串,并且将值重新赋值给其他元素
    }

对于属性,如果你想改变访问的可见性或者是对其进行注解,但是又不想改变它的默认实现,那么你就可以定义set和get但不进行实现。

var setterStudentName: String = "美国队长史爱民" // Initializer required, not a nullable type
  private set // the setter is private and has the default implementation

var setterWithAnnotation: Any?
  @Inject set // annotate the setter with Inject

备用字段(Backing Fields)

在上面例子中定义的Student类里面,属性的get和set方法里面使用了一个field,它是一个自动的返回字段,代表的就是属性。
Kotlin中的类并不允许使用字段,在自定义getter和setter的时候,可以使用field来起到局部变量的作用。

var counter = 0 //初始化值会直接写入备用字段
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值