Java中权限修饰符
* public、private、protected和默认
*
Scala中的权限修饰符
* 默认、private、private[包名]、protected
* 说明
* 默认
* scala中的默认的访问权限为public,但是scala中没有public关键字
* 权限说明 公共属性、公共类,不受权限控制
* private
* 修饰类
* 只能被同包(包含递归子包)访问
* 修饰成员
* 只能在类的内部和伴生对象中使用
* private[包名]
* 修饰类
* 只能被同包(包含递归子包)访问 + 被指定的(父类)包内
* 修饰成员
* 只能在类的内部和伴生对象中使用 + 被指定的(父类)包内
* 注意事项
* private 修饰后 只能向下访问,如果需要向*问,需要指定private[父类包名]
* 同级包内的private类是无法访问的
* 示例 com.dxm.apackage 、com.dxm.bpackage
* apackage、bpackage 内的私有类无法互相访问
* protected
* 修饰成员
* 只能在同类(伴生对象)、子类中访问
* java中的protected,同类子类 + 同包类中可访问
*
* */
package com.dawang.scala.面向对象 /** * @author gaocun * @create 2021-10-21 7:44 PM */ object 访问权限_04 { /* * Java中权限修饰符 * public、private、protected和默认 * * Scala中的权限修饰符 * 默认、private、private[包名]、protected * 说明 * 默认 * scala中的默认的访问权限为public,但是scala中没有public关键字 * 权限说明 公共属性、公共类,不受权限控制 * private * 修饰类 * 只能被同包(包含递归子包)访问 * 修饰成员 * 只能在类的内部和伴生对象中使用 * private[包名] * 修饰类 * 只能被同包(包含递归子包)访问 + 被指定的(父类)包内 * 修饰成员 * 只能在类的内部和伴生对象中使用 + 被指定的(父类)包内 * 注意事项 * private 修饰后 只能向下访问,如果需要向*问,需要指定private[父类包名] * 同级包内的private类是无法访问的 * 示例 com.dxm.apackage 、com.dxm.bpackage * apackage、bpackage 内的私有类无法互相访问 * protected * 修饰成员 * 只能在同类(伴生对象)、子类中访问 * java中的protected,同类子类 + 同包类中可访问 * * */ } package Packtwo { package PackOne { // 公共类 class PublicClass { var name = "这是公共类" private var flag = "这是公共类的私有属性" private[PackOne] var flagPack = "这是公共类的私有[包]属性" } // 私有类 private class PrivateClass { var name = "这是私有类" } // 私有类 + 指定包名 private[Packtwo] class PrivatePackClass { var name = "这是private[包]私有类" } // 测试 protected 修饰成员 class ProtectedClassFu { protected var name = "这是ProtectedClassFu类" } class ProtectedClassZi extends ProtectedClassFu { def show = println( name) } // 测试对象 object test { def main(args: Array[String]): Unit = { println("同包内访问私有类 - ", new PrivateClass().name) println("同包内访问私有类 - ", new PrivatePackClass().name) //println("同包内公共类私有属性 - ",new PublicClass().flag) //Symbol flag is inaccessible from this place println("同包内公共类私有[包]属性 - ", new PublicClass().flagPack) //println("ProtectedClassFu-name:",new ProtectedClassFu().name) new ProtectedClassZi().show } } } import PackOne.{PrivateClass, PrivatePackClass} // 测试对象 object test { def main(args: Array[String]): Unit = { //println("不同包内访问私有类 - ", new PrivateClass().name) //Symbol PrivateClass is inaccessible from this place println("同包内访问私有类 - ", new PrivatePackClass().name) } } }