欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Kotlin笔记 第七章 (三)包与访问控制符.md

程序员文章站 2022-03-13 10:54:10
...

导包

1、封装概念

封装:即将对象状态信息封装在对象内部,不允许外部程序直接访问对象内部信息,而是通过对象暴露的方法实现对内部状态的访问与操作

2、包

Kotlin编译器总是会为源文件中的包结构生成对应的文件目录,而Javac编译期需要-d选项才会生成文件目录;

2.1、导包

Kotlin支持两种方式:

精确导包:
import foo.bar//导入foo包中的Bar

和通配符导入

import foo.*	//导入foo包中的所有成员

Kotlin中的import相当于Java中的import和static import(静态导入)合体,它不仅可以导入类,还可以导入:

  1. 顶层函数即属性
  2. 对象声明中声明的函数和属性
  3. 枚举常量

当遇到不同包中相同类名,Java的做法是

其中有一个类放弃导包,使用类全名

Kotlin优雅的解决了这个问题:

利用取别名的方式,解决导入不同包中相同类名的类,如:

import Java.sql.Date  as SDate

3、访问控制符

private:只能在该类的内部或者文件的内部被访问

internal:在该类的背部或者同一个模块内被访问

protected:在该类的内部或者文件内部或者其之类中被访问

public:任意地方被访问

Kotlin如果没有显示指定访问符,默认是public

3.1、位于包内的顶层成员

位于包内的顶层成员(包括顶层类、接口、函数、属性),只能使用private、internal、public其中之一,不能使用protected修饰符;

private:只能在在当前文件中被访问

internal:只能在当前文件或者当前模块中被访问

public:任意地方被访问

如:

private fun foo(){}
internal fun test(){}
public var bar :Int=8
    private set
internal  var baz=9
    private set

注意:getter方法的访问权限总是和该属性保持一致

直接定义在包内的顶层函数、属性会转换成Kotlinx所生成的类(类名+Kt)中的静态方法和静态属性;

3.2、位于接口、类之内的成员

位于类、接口之内的成员(包括顶层类、接口、函数、属性),只能使用private、internal、protected、public其中之一

private:只能在该类中被访问
internal:只能在该类或者当前模块中被访问
protected;只能在该类或其子类中被访问
public:任意地方

局部声明(局部变量、局部方法、局部嵌套类)作用域只在该方法内有效,不能使用访问控制符

相关标签: Kotlin