【Kotlin】private、 protected、 internal 和 public指定修饰符的区别

代码

import android.util.Log

/**
 * Android通用Logger工具,在此处可以对log进行控制。如开启/关闭
 */
// TODO: internal 是kt的安全限制符号,类似public 等等 
internal class Logger {
    companion object {
        private const val SDK_TAG = "wb_demo"

        // 可以加个开关控制。根据编译版本来修改该值
        private const val ENABLE_LOG = true

        fun d(tag: String?, msg: String) {
            // 1、通过Android系统api Log输出到控制台
            Log.d(wrapTag(tag), msg)
            // 2、通过ZegoDocsSDK,写入文件
        }

        fun i(tag: String?, msg: String) {
            Log.i(wrapTag(tag), msg)
        }

        fun w(tag: String?, msg: String) {
            Log.w(wrapTag(tag), msg)
        }

        fun e(tag: String?, msg: String) {
            Log.e(wrapTag(tag), msg)
        }

        /**
         * 所有log加上统一的前缀
         */
        private fun wrapTag(tag: String?): String {
            return SDK_TAG + tag
        }

        /**
         * 往sdk写的logMsg,tag 和 msg 直接拼接在一起
         */
        private fun wrapSdkLogMsg(tag: String, msg: String): String {
            return tag + msg
        }
    }
}

其中internal是一个可见修饰符。区别如下:

如果你不指定任何可见性修饰符,默认为 public,这意味着你的声明将随处可见;
如果你声明为 private,它只会在声明它的文件内可见;
如果你声明为 internal,它会在相同模块内随处可见;
protected 不适用于顶层声明。

其中特别强调一下模块

可见性修饰符 internal 意味着该成员只在相同模块内可见。更具体地说, 一个模块是编译在一起的一套 Kotlin 文件:
如下:
一个 IntelliJ IDEA 模块;
一个 Maven 项目;
一个 Gradle 源集(例外是 test 源集可以访问 main 的 internal 声明);
一次 Ant 任务执行所编译的一套文件。

可见性修饰符-kotlin中文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值