【Kotlin】object 对象 ( object 关键字 | 对象声明 | 对象表达式 | 伴生对象 )
创始人
2024-05-13 23:50:55

文章目录

  • 一、object 关键字
  • 二、对象声明
  • 三、对象表达式
  • 四、伴生对象





一、object 关键字



object 关键字 可以定义 单例类 ; 使用 object 关键字修饰的类 , 只能创建一个实例对象 ;


object 有 3 种使用方式 :

  • 对象声明 : 定义单例类 ;
  • 对象表达式 : 定义匿名内部类 ;
  • 伴生对象 : 定义静态成员 ;




二、对象声明



使用 object 关键字 进行 对象声明 , 就是 定义单例类 ;


对象声明格式 :

object 单例类类名 {}

代码示例 :

object Student {var name = "Tom"var age = 18fun sayHello() {println("$name $age years old, say hello.")}
}fun main() {// 调用单例类Student.sayHello()
}

执行结果 :

Tom 18 years old, say hello.




三、对象表达式



使用 object 关键字 声明 对象表达式 , 就是 Kotlin 中的匿名内部类 ; 该类只使用一次 ;

定义 对象表达式 ( 匿名内部类 ) 是由于要 修改 类中的函数 , 常见的是要 覆盖重写函数 , 该 以及要 重写的函数 必须是用 open 修饰 ;

使用 对象表达式 创建出来的 匿名内部类 对象 , 只有 1 个实例对象 ;


下面的 对象表达式 ( 匿名内部类 ) 是定义 Student 类的子类 , 因此 Student 类必须使用 open 修饰 , 在匿名内部类内部重写了 sayHello 函数 , 因此 在 Student 类中的 sayHello 函数 必须使用 open 进行修饰 ;


代码示例 :

open class Student {var name = "Tom"var age = 18open fun sayHello() {println("$name $age years old, say hello.")}
}fun main() {val student = object : Student() {override fun sayHello() {super.sayHello()println("匿名内部类添加的代码逻辑")}}student.sayHello()
}

执行结果 :

Tom 18 years old, say hello.
匿名内部类添加的代码逻辑




四、伴生对象



使用 companion object 定义的类中的 伴生对象 , 内部的 成员 和 函数 相当于 静态成员 ;

一个类中只能有一个伴生对象 ;

伴生对象 的 成员函数 和 成员属性 , 可以直接使用类名进行访问 ;


代码示例 :

open class Student {companion object {const val DELTA = 10fun delta() {println("delta is $DELTA")}}var name = "Tom"var age = 18
}fun main() {println(Student.DELTA)Student.delta()
}

执行结果 :

10
delta is 10

相关内容

热门资讯

demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...