Kotlin入门学习教程之可见性修饰符

目录
  • 前言
  • 1、包场景下的可见性修饰符
  • 2、类内部声明的成员
  • 总结

前言

在Kotlin中四种可见性修饰符:private、protected、internal、public,如果没有显示指定修饰符的话,默认可见性是public。

四种修饰符的说明

  • public修饰符表示 公有 。此修饰符的范围最大。当不声明任何修饰符时,系统会默认使用此修饰符。
  • internal修饰符表示 模块 。对于模块的范围在下面会说明。
  • protected修饰符表示 私有`+`子类。值得注意的是,此修饰符不能用于顶层声明,在下面可以看到。
  • private修饰符表示 私有 。此修饰符的范围最小,即可见性范围最低。

1、包场景下的可见性修饰符

package com.iflytek.basekotlin.`class`
//函数、属性、类、对象和接口都可以在顶层声明,即直接在包内  2021/6/22
fun method(){} // 默认为public ,随处可见 2021/6/22
private class ClassA(){} // 只在该文件内可见  2021/6/22
private val classA:ClassA = ClassA() // 此处只能用private,因为ClassA只在该文件内可见,所以其对象也是  2021/6/22
internal interface InterfaceA{} // 只在同模块内可见 2021/6/22
protected var name:String = "" // 错误:Modifier 'protected' is not applicable to 'top level property without backing field or delegate'  2021/6/22
  • 如果不指定任何可见性修饰符,默认为public,这意味着随处可见
  • 如果声明为private,只在声明的文件内可见
  • 如果声明为internal,只在相同的模块内可见
  • protected不适用于顶层声明,即不适用于此场景

2、类内部声明的成员

open class VisibilityDemo{
    private val a = true // 只在该类内部可见  2021/6/22
    protected val b = true // 在类内部和其子类中可见  2021/6/22
    internal val c = true // 能见到类声明的本模块任何客户端都可见  2021/6/22
    val d = true // 能见到类声明的任何客户端都可见  2021/6/22
}

class SubVisibility:VisibilityDemo(){
    fun visible(){
        //println(a) // 不可见  2021/6/22
        println(b) // 可见  2021/6/22
        println(c) // 可见  2021/6/22
        println(d) // 可见  2021/6/22
    }
}

class UnRelated(){
    fun visible(visibilityDemo: VisibilityDemo){
//        println(visibilityDemo.a) // 不可见  2021/6/22
//        println(visibilityDemo.b) // 不可见  2021/6/22
        println(visibilityDemo.c) // 可见  2021/6/22
        println(visibilityDemo.d) // 可见  2021/6/22
    }
}
  • private 只在类内部可见
  • protected 在类及其子类中可见
  • internal 能见到类声明的本模块内可见
  • public 能见到类声明处可见

总结

到此这篇关于Kotlin入门学习教程之可见性修饰符的文章就介绍到这了,更多相关Kotlin可见性修饰符内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Kotlin修饰符lateinit(延迟初始化)案例详解

    Kotlin定义变量一般有如下写法 lateinit var name: String var age: String? = null 那么用lateinit 修饰和下面那种有什么区别呢,我们来看一下这两行代码反编译成java代码是什么样子的. @NotNull public String name; @Nullable private String age; @NotNull public final String getName() { String var10000 = this.name

  • Kotlin入门学习教程之可见性修饰符

    目录 前言 1.包场景下的可见性修饰符 2.类内部声明的成员 总结 前言 在Kotlin中四种可见性修饰符:private.protected.internal.public,如果没有显示指定修饰符的话,默认可见性是public. 四种修饰符的说明 public修饰符表示 公有 .此修饰符的范围最大.当不声明任何修饰符时,系统会默认使用此修饰符. internal修饰符表示 模块 .对于模块的范围在下面会说明. protected修饰符表示 私有`+`子类.值得注意的是,此修饰符不能用于顶层声明

  • Kotlin可见性修饰符详解

    目录 一. 四种修饰符的说明 二.在不同场景下各个修饰符声明的范围讲解 2.1.在包(package)中声明,即顶层声明的情况 2.1.1.测试同一个文件中声明不同的修饰符的范围 2.1.2.测试不同文件中声明不同的修饰符的范围 2.1.3.小结 2.2.在类(class)和接口(interface)中声明的情况 2.2.1.测试在类中声明的情况 2.2.2.测试在接口中声明的情况 2.2.3.小结 2.3.在构造函数中声明的情况 2.4.局部声明的情况 三.与Java中的可见性修饰符的对比 一

  • mybatis框架入门学习教程

    MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录. 1.创建工程,导入jar包 创建一个java工程或者web工程都可以,然后导入mybatis的jar包和依赖包还有数据库的jar包,本人使用Oracle10g数据库

  • mybatis快速入门学习教程新手注意问题小结

    什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 ses

  • MyBatis入门学习教程-MyBatis快速入门

    目录 Mybatis 一.快速开始 1.创建 Maven 项目 2.导入 Maven 依赖 3.配置 Maven 插件 4.新建数据库,导入表格 5.编写 Mybatis 配置文件 6.编写实体类 7.编写 mapper 接口 8.编写 mapper 实现 9.Mybatis 配置文件中,添加 mapper 映射 10.编写 Mybatis 工具类 11.测试 二.日志添加 1.添加 Maven 依赖 2.添加 log4j 配置 3.Mybatis 中配置 LOG 4.执行测试 三.Mybati

  • Python装饰器入门学习教程(九步学习)

    装饰器(decorator)是一种高级Python语法.装饰器可以对一个函数.方法或者类进行加工.在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果.相对于其它方式,装饰器语法简单,代码可读性高.因此,装饰器在Python项目中有广泛的应用. 这是在Python学习小组上介绍的内容,现学现卖.多练习是好的学习方式. 第一步:最简单的函数,准备附加额外功能 # -*- coding:gbk -*- '''示例1: 最简单的函数,表

  • Ajax入门学习教程(一)

    1 什么是AJAX AJAX(Asynchronous JavaScript And XML)翻译成中文就是"异步Javascript和XML".即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML). AJAX还有一个最大的特点就是,当服务器响应时,不用刷新整个浏览器页面,而是可以局部刷新.这一特点给用户的感受是在不知不觉中完成请求和响应过程. 与服务器异步交互: 浏览器页面局部刷新: 2. 同步交互与异步交互 同步交互:客户端发出一个

  • MyBatis入门学习教程(一)-MyBatis快速入门

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO) 首先给大家介绍MyBatis的含义

  • kotlin 官方学习教程之基础语法详解

    kotlin 官方学习教程之基础语法详解 Google 在今天的举行了 I/O 大会,大会主要主要展示内有容 Android O(Android 8.0)系统.Google Assistant 语音助手.Google 智能音箱.人工智能.机器学习.虚拟现实等.作为一个 Android 开发者,我关心的当然是 Android O(Android 8.0)系统了,那么关于 Android O 系统的一个重要消息是全面支持 Kotlin 编程语言,使得 Kotlin 成为了 Android 开发的官方

  • Vue + OpenLayers 快速入门学习教程

    Openlayers 是一个模块化.高性能并且功能丰富的WebGIS客户端的JavaScript包,用于显示地图及空间数据,并与之进行交互,具有灵活的扩展机制. 简单来说,使用 Openlayers(后面简称ol) 可以很灵活自由的做出各种地图和空间数据的展示.而且这个框架是完全免费和开源的. 前言 本文记录 Vue 使用 OpenLayers 入门,使用 OpenLayers 创建地图组件,分别使用 OpenLayers 提供的地图和本地图片做为地图. Overview OpenLayers

随机推荐