User-Profile-Image
hankin
  • 5
  • Java
  • Kotlin
  • Spring
  • Web
  • SQL
  • MegaData
  • More
  • Experience
  • Enamiĝu al vi
  • 分类
    • Zuul
    • Zookeeper
    • XML
    • WebSocket
    • Web Notes
    • Web
    • Vue
    • Thymeleaf
    • SQL Server
    • SQL Notes
    • SQL
    • SpringSecurity
    • SpringMVC
    • SpringJPA
    • SpringCloud
    • SpringBoot
    • Spring Notes
    • Spring
    • Servlet
    • Ribbon
    • Redis
    • RabbitMQ
    • Python
    • PostgreSQL
    • OAuth2
    • NOSQL
    • Netty
    • MySQL
    • MyBatis
    • More
    • MinIO
    • MegaData
    • Maven
    • LoadBalancer
    • Kotlin Notes
    • Kotlin
    • Kafka
    • jQuery
    • JavaScript
    • Java Notes
    • Java
    • Hystrix
    • Git
    • Gateway
    • Freemarker
    • Feign
    • Eureka
    • ElasticSearch
    • Docker
    • Consul
    • Ajax
    • ActiveMQ
  • 页面
    • 归档
    • 摘要
    • 杂图
    • 问题随笔
  • 友链
    • Spring Cloud Alibaba
    • Spring Cloud Alibaba - 指南
    • Spring Cloud
    • Nacos
    • Docker
    • ElasticSearch
    • Kotlin中文版
    • Kotlin易百
    • KotlinWeb3
    • KotlinNhooo
    • 前端开源搜索
    • Ktorm ORM
    • Ktorm-KSP
    • Ebean ORM
    • Maven
    • 江南一点雨
    • 江南国际站
    • 设计模式
    • 熊猫大佬
    • java学习
    • kotlin函数查询
    • Istio 服务网格
    • istio
    • Ktor 异步 Web 框架
    • PostGis
    • kuangstudy
    • 源码地图
    • it教程吧
    • Arthas-JVM调优
    • Electron
    • bugstack虫洞栈
    • github大佬宝典
    • Sa-Token
    • 前端技术胖
    • bennyhuo-Kt大佬
    • Rickiyang博客
    • 李大辉大佬博客
    • KOIN
    • SQLDelight
    • Exposed-Kt-ORM
    • Javalin—Web 框架
    • http4k—HTTP包
    • 爱威尔大佬
    • 小土豆
    • 小胖哥安全框架
    • 负雪明烛刷题
    • Kotlin-FP-Arrow
    • Lua参考手册
    • 美团文章
    • Java 全栈知识体系
    • 尼恩架构师学习
    • 现代 JavaScript 教程
    • GO相关文档
    • Go学习导航
    • GoCN社区
    • GO极客兔兔-案例
    • 讯飞星火GPT
    • Hollis博客
    • PostgreSQL德哥
    • 优质博客推荐
    • 半兽人大佬
    • 系列教程
    • PostgreSQL文章
    • 云原生资料库
    • 并发博客大佬
Help?

Please contact us on our email for need any support

Support
    首页   ›   Kotlin   ›   Kotlin Notes   ›   正文
Kotlin Notes

Kotlin-类型进阶—类与成员的可见性(十九)

2021-01-24 22:44:35
1304  0 0
参考目录 隐藏
1) 可见性
2) 构造器可见性

阅读完需:约 2 分钟

可见性

  • 与java不同,kotlin中啥也不写,默认就是public的,而java中不写默认是default包内可见
  • kotlin中多一个限制可见性的internal关键字,去掉了default关键字
  • 对于protected, java是包内可见,而kotlin是类内可见,这点不同,当然子类肯定都是可见的,kotlin中protected不能用来修饰类和顶级生命

internal这个关键字比较有意思,可以在kotlin中用作模块化隔离可见性

比如在一个模块中声明:

//internal只在模块内可见,模块外的kotlin访问不到
internal class CoreApiKotlinA {
    //指定JvmName使java也不能访问该方法
    @JvmName("%abcd")
    internal fun a(){
        println("Hello A")
    }
}

而在依赖它的模块中使用它会报错:

    //kotlin中访问其他模块的internal的类会报错 不可见
    val coreApiKotlinA = CoreApiKotlinA()
    coreApiKotlinA.a()

但是通过java代码却可以使用,此时可以通过internal 方法上添加@JvmName("xxx")注解指定一个非法的java变量可达到java不能调用的目的,但实际上java是能看到的,只不过不能打出来合法的方法名而已。

    //java是可以访问internal的kotlin类的,但是可以指定JvmName使java也不能访问对应方法
    CoreApiKotlinA coreApiKotlinA = new CoreApiKotlinA();  
    coreApiKotlinA.%abcd();

构造器可见性

通过工厂方法来添加对象使需要私有化构造器

私有化属性后只能在内部访问和调用

私有化属性后意味着子类可以访问到这个属性

  • get可见性必须和属性可见性一致, 不能定义public属性的get为private
  • set可见性不能大于属性的可见性, 不能定义private属性的set为public

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

0 打赏
Enamiĝu al vi
不要为明天忧虑.因为明天自有明天的忧虑.一天的难处一天当就够了。
543文章 68评论 294点赞 594505浏览

随机文章
Java—CopysOnWriteArrayList(线程安全)
5年前
SpringSecurity—OAuth 2(七) 令牌存入 Redis
5年前
SpringSecurity—同时对接多个用户表(多数据源)
5年前
Java—并发编程(六)JUC锁 – (6)LockSupport
4年前
HttpServletResponse常用方法
5年前
博客统计
  • 日志总数:543 篇
  • 评论数目:68 条
  • 建站日期:2020-03-06
  • 运行天数:1927 天
  • 标签总数:23 个
  • 最后更新:2024-12-20
Copyright © 2025 网站备案号: 浙ICP备20017730号 身体没有灵魂是死的,信心没有行为也是死的。
主页
页面
  • 归档
  • 摘要
  • 杂图
  • 问题随笔
博主
Enamiĝu al vi
Enamiĝu al vi 管理员
To be, or not to be
543 文章 68 评论 594505 浏览
测试
测试
看板娘
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付