Kotlin中的私有可见性修饰符和受保护可见性修饰符有什么区别?

时间:2018-09-18 11:06:09

标签: android kotlin access-modifiers

我刚开始学习Kotlin,并与受保护的访问修饰符混淆了,我的疑问是Kotlin中的私有访问和受保护的访问修饰符之间的确切区别是什么。我在Google上进行了搜索,但没有得到满意的答复。

6 个答案:

答案 0 :(得分:1)

官方documentatin说:

  

private表示仅在此类内部可见(包括其所有   成员);

     

protected-与private相同,并且在子类中也可见;

答案 1 :(得分:0)

来自Kotlin doc

  

private-意味着仅在此类内(包括其所有成员)可见;

     

受保护的-与私有+相同,也可以在子类中看到;

可见,表示可以访问或使用该字段或方法。

答案 2 :(得分:0)

与大多数OOP语言一样,Kotlin中有多个修饰符:

public-可以从项目中的任何位置访问类,函数或属性。 默认情况下,在Kotlin中,类,属性或函数是公共的

protected-类,函数或属性只能由当前类的子类访问

private-类,函数或属性只能在当前类中访问

internal-可以从当前模块中的任何位置访问类,函数或属性

答案 3 :(得分:0)

检查this以获得详细说明。

如果您想了解受保护的概念,则需要对子类和继承有基本的了解。

具有受保护的访问说明符的变量或函数可以从子类中看到。但是私有将绑定类的范围。

考虑以下基本代码:



    open class Outer {
        private val a = 1 // visible only for instance of class Outer
        protected open val b = 2 // visible for instance of Outer and another subclass which inherits Outer.
        val d = 4  // public by default
        protected class Nested {
            public val e: Int = 5
        }
    }

    public class Subclass : Outer() {
        // a is not visible
        // b, d are visible
        // Nested and e are visible

        override val b = 5   // 'b' is protected
    }


注意:上面的代码来自文档。

答案 4 :(得分:0)

类和接口

对于在类内声明的成员:

私有意味着仅在此类内(包括其所有成员)可见;

受保护的-与私有+在子类中也可见;

内部-此模块中任何看到声明类的客户端都看到其内部成员;

公共-任何看到声明类的客户都会看到其公共成员。

KotlinLang

答案 5 :(得分:0)

与班级成员有关:

    标记为protected
  • 项目在类和子类中可见
  • 标记为private的项目在班级中可见

与顶级声明有关:

  • ({protected不适用)
  • 标记为private
  • 项目在同一文件中可见