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)
}
}
}