千家信息网

Scala中包、类、对象、成员访问权限理解

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本文通过下面一个程序简单分析下包、类、对象访问权限的情况:package spark { package navigation { private[spark] class Navigator
千家信息网最后更新 2025年02月03日Scala中包、类、对象、成员访问权限理解

本文通过下面一个程序简单分析下包、类、对象访问权限的情况:

package spark {  package navigation {    private[spark] class Navigator {      protected[navigation] def useStartChar() = println("navigation")      class LegOfJourney {        private[Navigator] val distance = 100      }      private[this] var speed = 200    }        class Test{       new Navigator().useStartChar()    }  }  package launch {    object Vehicle {        private[launch] val guide = new navigation.Navigator    }  }}

首先先分析下上面程序,spark包下有两个包navigation和launch,在包navigation里面定义了类Navigator,并将其访问权限升级为spark包下所有,意思是在spark包里面都可以访问该类,

如下面包launch里面就访问了类Navigator,private[launch] val guide = new navigation.Navigator。

在类Navigator中定义了方法useStartChar(),并将其的访问权限设置为navigation,这表明只能在包navigation里面访问该方法,如Test类中new Navigator().useStartChar()

private[this] var speed = 200,这个只能在类Navigator中访问,不能再该类其他类对象中访问。


0