Kotlin的扩展

作者 : 开心源码 本文共678个字,预计阅读时间需要2分钟 发布时间: 2022-05-12 共222人阅读

无需依靠继承和装饰者模式来扩展一个类的功能,通过扩展的特殊公告实现
可以通过扩展函数替代工具类

一、扩展函数

  1. 把一个类的类名作为前缀,在函数内可以直接使用该类的对象 this。如扩展 Activity 的功能
fun Activity.startActivity(cls: Class<*>) {    startActivity(Intent(this, cls))}
  1. 扩展函数是静态的。扩展没有实际修改他们所扩展的类,并没有给原有的类插入新的成员,即他的值是被引用时的对象类型决定。编译器会提示
open class Personclass Student: Person()fun Person.name() = "person"fun Student.name() = "student"fun printPerson(person: Person){    println(person.name())}fun main() {    // 打印为 person    printPerson(Student())}
  1. 扩展函数和成员函数的名称、参数列表、返回值相同时,调用的是成员函数。编译器会提示
class Person{    fun play(){ }}fun Person.play(){ }

二、扩展属性

把一个类的类名作为前缀,通过 get()/set() 扩展一个类的属性

class Personval Person.name: String    get() = "wmj"// 编译出错。Extension property cannot be initialized because it has no backing fieldval Person.name: String = "wmj"

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Kotlin的扩展

发表回复