Scala - 修饰符

Scala - 修饰符 首页 / Scala入门教程 / Scala - 修饰符

本章将引导您完成Scala访问修饰符,包,类或对象的成员可以使用访问修饰符标签为私有private和受保护protect,或为公共访问public的。

Private 私有修饰符

私有修饰符表示只有当前类或对象可访问。

class Outer {
   class Inner {
      private def f() { println("f") }
      
      class InnerMost {
         f() //OK
      }
   }
   (new Inner).f() //Error: f 不可访问
}

在Scala中,访问权限(new Inner), f()是非法的,因为f在Inner中被声明为私有,并且访问不是从Inner类内部进行的。

Protected 受保护修饰符

protected 修饰符表示只有当前类或子类可访问。

package p {
   class Super {
      protected def f() { println("f") }
   }
   
   class Sub extends Super {
      f()
   }
   
   class Other {
      (new Super).f() //Error: f 不可访问
   }
}

Sub类中对f的访问是可以的,因为f在" Super"类中声明为受保护,并且" Sub"类是Super的子类。

Public 公共修饰符

privateprotected不同,不需要为Public成员指定Public关键字,public修饰符表示所有类都可以访问。

class Outer {
   class Inner {
      def f() { println("f") }
      
      class InnerMost {
         f() //OK
      }
   }
   (new Inner).f() //OK 因为现在 f() 是公开的
}

保护区域

Scala中的访问修饰符可以通过限定符进行扩充,形式private [X]或protected [X]的修饰符表示访问是private私有的或protected 受保护的,最多X个,其中X指定一些封闭的包,类或单例对象 。

package society {
   package professional {
      class Executive {
         private[professional] var workDetails=null
         private[society] var friends=null
         private[this] var secrets=null

         def help(another : Executive) {
            println(another.workDetails)
            println(another.secrets) //ERROR
         }
      }
   }
}

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Elasticsearch核心技术与实战 -〔阮一鸣〕

RPC实战与核心原理 -〔何小锋〕

WebAssembly入门课 -〔于航〕

MySQL 必知必会 -〔朱晓峰〕

如何落地业务建模 -〔徐昊〕

去无方向的信 -〔小麥〕

人人都用得上的数字化思维课 -〔付晓岩〕

手把手带你写一个MiniSpring -〔郭屹〕

LangChain 实战课 -〔黄佳〕

好记忆不如烂笔头。留下您的足迹吧 :)