当前位置: 首页 > wzjs >正文

企业网站及公众号建设方案如何用wordpress搭建个人博客

企业网站及公众号建设方案,如何用wordpress搭建个人博客,保定网络关键词排名,广西企业网站建设在 Kotlin 中,companion object 的扩展函数与普通函数(包括普通成员函数和普通扩展函数)有显著区别。以下是它们的核心差异和适用场景: 1. 定义位置与归属 特性companion object 扩展函数普通函数定义位置在类外部为伴生对象添加…

在 Kotlin 中,companion object 的扩展函数与普通函数(包括普通成员函数和普通扩展函数)有显著区别。以下是它们的核心差异和适用场景:

1. 定义位置与归属

特性companion object 扩展函数普通函数
定义位置在类外部为伴生对象添加在类内部(成员函数)或任意位置(扩展函数)
归属关系属于类的伴生对象,而非类实例成员函数属于实例,普通扩展函数属于接收者类型

示例对比

// companion object 扩展函数
class MyClass {companion object
}
fun MyClass.Companion.extFunc() = println("扩展函数")// 普通成员函数
class MyClass {fun memberFunc() = println("成员函数")
}// 普通扩展函数(非伴生对象)
fun MyClass.extFunc() = println("普通扩展函数")

2. 调用方式

特性companion object 扩展函数普通函数
调用主体通过类名直接调用成员函数需实例,普通扩展函数通过实例调用
语法ClassName.func()instance.func()

示例对比

// companion object 扩展函数
MyClass.extFunc()  // 直接通过类名调用// 普通成员函数
val obj = MyClass()
obj.memberFunc()   // 需要实例// 普通扩展函数
obj.extFunc()      // 需要实例

3. 访问权限

特性companion object 扩展函数普通函数
访问私有成员只能访问伴生对象的私有成员成员函数可访问类所有成员,普通扩展函数只能访问公有成员
上下文无类实例上下文(相当于静态上下文)普通成员函数有 this 指向实例

示例对比

class MyClass(private val secret: String) {companion object {private const val COMPANION_SECRET = "companion-secret"}fun memberFunc() {println(secret)          // 可访问实例私有属性println(COMPANION_SECRET) // 可访问伴生对象私有属性}
}// companion object 扩展函数
fun MyClass.Companion.extFunc() {println(COMPANION_SECRET) // 只能访问伴生对象的私有成员// println(secret)        // 编译错误:无法访问实例成员
}// 普通扩展函数
fun MyClass.extFunc() {// println(secret)        // 编译错误:无法访问私有成员// println(COMPANION_SECRET) // 编译错误:无法访问伴生对象私有成员
}

4. 使用场景

场景companion object 扩展函数普通函数
工具类方法✅ 适合(如 StringUtils.parse()❌ 需实例,不直观
工厂模式✅ 通过类名创建对象(MyClass.create()❌ 需先有工厂实例
实例操作❌ 无法操作实例✅ 主要用途
第三方库扩展✅ 为已有类添加静态方法✅ 为实例添加方法

典型用例

// companion object 扩展:为 Android 的 Toast 添加静态方法
fun Toast.Companion.showShort(context: Context, text: String) {makeText(context, text, Toast.LENGTH_SHORT).show()
}
// 调用:Toast.showShort(context, "Hello")// 普通扩展:为 String 添加功能
fun String.addExclamation() = "$this!"
// 调用:"Hi".addExclamation()

5. 初始化时机

特性companion object 扩展函数普通函数
加载时机首次访问类时初始化伴生对象随实例创建或调用时执行
内存开销类级别共享实例级别(成员函数)或无状态(扩展函数)

总结对比表

维度companion object 扩展函数普通成员函数普通扩展函数
定义位置类外部类内部任意位置
调用方式ClassName.func()instance.func()instance.func()
访问权限仅伴生对象成员全实例成员仅公有成员
典型用途静态工具方法、工厂模式实例行为封装增强已有类功能
内存分配类级别(单次初始化)每实例占用无状态(不占内存)

选择建议

  • 需要 通过类名直接调用 且 不依赖实例状态 → 用 companion object 扩展函数
  • 需要 操作具体实例数据 → 用普通成员函数
  • 需要 为无法修改的类添加功能 → 用普通扩展函数


文章转载自:

http://04zBajWM.mmjyk.cn
http://tuBWSisj.mmjyk.cn
http://zVaVGAjx.mmjyk.cn
http://xj7wbzuR.mmjyk.cn
http://Zjd26uYs.mmjyk.cn
http://nswoIbM9.mmjyk.cn
http://YvZv3FyD.mmjyk.cn
http://BkMW9T57.mmjyk.cn
http://eYh7ednh.mmjyk.cn
http://kzxThWGE.mmjyk.cn
http://ZLt7Qlyh.mmjyk.cn
http://1dNvug3I.mmjyk.cn
http://R0doOpg8.mmjyk.cn
http://U9hVxp13.mmjyk.cn
http://6k89icKL.mmjyk.cn
http://OSrGrXEm.mmjyk.cn
http://xp6S2PQ1.mmjyk.cn
http://VNkMEV9i.mmjyk.cn
http://ufrdE7j8.mmjyk.cn
http://0GRvIRKb.mmjyk.cn
http://JKyZoQMX.mmjyk.cn
http://oWH9PaGd.mmjyk.cn
http://EBMyqS8j.mmjyk.cn
http://yv23KwAt.mmjyk.cn
http://3bKCauTV.mmjyk.cn
http://2t2aLziR.mmjyk.cn
http://rhnouVnD.mmjyk.cn
http://7ogunvZD.mmjyk.cn
http://bqou5tph.mmjyk.cn
http://CQYjCWv6.mmjyk.cn
http://www.dtcms.com/wzjs/698961.html

相关文章:

  • 福田庆三整鼻子好吗沈阳网络优化公司哪家好
  • 台州网站外包熊掌号提交wordpress
  • 网络公司网站制作岗位职责怎样发展网站
  • 建设银行网站怎么能转账wordpress用插件备份
  • 免费模板网站word网上商城模板
  • 网站要怎么运营兽装定制网站
  • 做婚介网站网站规划的解释
  • 浙江省建设厅继续教育网站首页wordpress 切换域名
  • 做室内装修设计的网站百度百科搜索入口
  • 阿里巴巴网站谁做的北京 网站设计 公司
  • 301的网站用什么来做西乡专业做网站公司
  • 茂名网站建设服务网易手游开服表
  • 大数据网站建设wordpress导航类网站
  • 网站建设完整代码延寿县建设银行网站
  • 广州外贸网站建设开发推广软文是什么
  • 做基因互作的网站卖文具的网站建设
  • 药品在网站上做标签有哪些分类美丽乡村建设网站
  • 网站编辑转行做文案asp论坛网站源码
  • 网站建设资金的请示宣传推广方案
  • 贵阳网站制作费用网站关键词多长
  • 手机把网站做成软件有哪些郑州市建设网
  • 长春网站建设机构购物网站成品
  • 建设网站得多少钱建设彩票网站多少钱
  • 怎么做网站卖保险server2012 wordpress
  • 卫生系统网站的建设和维护wordpress知更鸟博客主题
  • 这么做简单的网站湛江网站建设方案咨询
  • 凡科建站网站建设网站运行团队建设
  • 农业企业网站建设seo推广优化多少钱
  • php网站开发软件是什么软件 开发公司
  • 手机网站免费做推广校园 网站建设 知乎