Kotlin入门笔记五:可见修饰符

伴随着国庆小长假的结束,想必大家都已经平复了自己的心情,投入到工作和学习当中,距离2018年元旦还有84天,距离春节还有119天,不急不躁,耐心等待。言归正传,笔者今天给大家带来Kotlin中的修饰符。


可见性修饰符

在Java中,对于一个类默认是包私有,但是在Kotlin中,并没有对包私有有实质性的定义。Kotlin中除了PrivatePublicProtect三种修饰符之外,还提供了Internal这个修饰符,用于Kotlin的模块,对于Kotlin中的模块相当于Android程序中的一个ModuleInternal修饰的方法只能在同模块中调用。这在Java中是没有的。

首先我们来回顾下Java中四中修饰符的可见范围:
  • public:任何地方,都可以通过该类的对象调用;
  • private:只能在该类中被调用;
  • protected:只能在该类或者改子类、同一包下被调用;
  • 无修饰符(Java默认):可以在该类和同一包下被调用。它和protected是不一样的,千万别混淆了。

回忆了Java 的四种之后,我们来看看Kotlin中这四个修饰符的可见范围:

修饰符 类成员 顶层声明
public(默认) 所有地方可见 所有地方可见
internal 模块中可见 模块中可见
protect 子类中可见 ---
private 同类中可见 同文件中可见

笔者通过一个demo来带大家详细理解下:

创建一个modifier包,声明了一个MyModifier类,里面分别有四种修饰符修饰的变量:

这是demo结构:

modifier.png

MyModifier类:

package modifier
​
open class MyModifier{
   private val a=1
   protected val b=2
   val c=3
   internal val d=4

   private val modifier = MyModifier()
​
   fun printModifier() {
       println(modifier.a)
       println(modifier.b)
       println(modifier.c)
       println(modifier.d)
  }
}

然后在外层MyPrivate调用看看:

import modifier.MyModifier

class MyPrivate {
    private val modifier: MyModifier = MyModifier()
    fun printModifier() {
        println(modifier.c)
        println(modifier.d)
    }
}

可以明显的看到,在MyModifier本类中,无论是什么修饰符修饰的变量,都可以被调用到,然而在MyPrivate类中只有被publicinternal修饰的变量才可以被调用。看到这里,笔者希望大家可以动手去码一下其它的情况,这样才能深刻的理解这四种修饰符的具体含义。

这期很简短,但是内容却不是很容易理解,笔者还是希望大家能够自己动手码一遍,然后静下心来好好体验下这四个修饰符的相同和不同之处,在安全性方面有着很高的要求。

这期结束后,不知道大家对Kotlin一些基本语法是否有了一定的掌握,下期笔者将带着大家进入Kotlin中Lambda世界,关于Lambda将分三份笔记介绍。


写在最后

每个人不是天生就强大,你若不努力,如何证明自己,加油!

Thank You!

--Taonce

如果你觉得这篇文章对你有所帮助,那么就动动小手指,长按下方的二维码,关注一波吧~~