scala private private[package] protected 使用说明

package com.scala.idle

object PrivateDoor {

def main(args: Array[String]): Unit = {

val privateContainer = new PrivateContainer()

//访问共有变量

println(privateContainer.publicVar)

//调用共有方法

privateContainer.showPublicMethod

val privateClass = new PrivateClass

privateClass.publicMethod

}

}

class PrivateContainer{

/**

* 共有方法,外界的一个入口

*/

def showPublicMethod = {

showPrivateMethod

}

/**

* 私有方法,外界不能直接访问.子类也不行

*/

private def showPrivateMethod = {

println("showPrivateFunction is a private function ,with a private variable : " + privateVar)

}

//共有变量

val publicVar = "This is a public variable"

//私有变量,外界无法访问。可以被showPrivateMethod方法访问

private val privateVar = "This is a private variable"

}

/**

* private class 作用于的范围:

* 1 可以被同文件\相同包的其它class、object、trait调用

* 2 可以被子package(递归所有的子包)的class、object、trait调用

* 3 其它package中的元素是不可以调用该类的

*/

private class PrivateClass{

//private 变量

private val xxx = "xxx"

//private 方法

private def showPrivateMethod = {

println("showPrivateMethod is a private method of private class PrivateClass")

}

//共有方法,对外界保留的接口

def publicMethod = {

showPrivateMethod

}

}

=============================================================================================================================

package org.cma.scala.scope

object HigherPrivate {

def main(args: Array[String]): Unit = {

val higherScope = new HigherScope()

higherScope.useInCmaMethod

}

}

class HigherScope{

/**

* private[cma] 控制了方法的可用范围:

* 1 org.cma package中的元素可以使用该方法

* 2 org.cma 子包(包含递归子包)中的元素可以使用该方法

*/

private[cma] def useInCmaMethod = {

println("you can use this method if you are in cma or the sub package")

}

}

===================================================================================================

package com.scala.idle

object ProtectedObj {

def main(args: Array[String]): Unit = {

val protectedContainer = new SubProtectedContainer()

protectedContainer.showXXX

}

}

class ProtectedContainer{

/**

* 这个方法是可以被子类调用的,这是private method 做不到的。

*/

protected def protectedMethod = {

println("This is a protected method of class ProtectedContainer")

}

}

class SubProtectedContainer extends ProtectedContainer{

def showXXX = {

//调用父类的方法

super.protectedMethod

}

}

时间: 2024-10-16 07:07:36

scala private private[package] protected 使用说明的相关文章

Delphi XE中类成员的访问权限(新增了strict private和strict protected,还有automated)

Delphi XE中类成员的访问权限共提供了6个关键词来用于限定访问权限:public.private.protected.published.automated strict private . strict protected其各自的含义为: 1. strict private:此区定义的字段或方法只能用于当前的类中.即T1中此区定义的成员只能在T1中使用.2. strict protected:此区定义的成员除能用于当前类中,还可用于当前类的任何子类中. 以上两种成员,同一个类的不同对象间

Java Modifiers, default/public/protected/private/ final/static/transient/synchronized/volatile

reference: http://www.studytonight.com/java/modifier-in-java.php Modifiers are keywords that are added to change meaning of a definition. In java, modfiers are cateogrized into two types: 1. Access control modifier 2. Non Access modifier 1) Access co

从头认识java-5.3 public private protected

这一章节我们来讨论一下public .private和protected 1.CLASS_PATH 环境变量里面的CLASS_PATH,这个路径就是我们java寻找文件的路径. 注意:一般在CLASS_PATH里面都会加上"."代表当前文件夹,如果不加上这个符号,那么,你编辑的java很有可能不能编译,因为在CLASS_PATH里面特定的几个文件夹里面很可能找不到你的源文件. 2.public 对于所有成员公开 package com.ray.ch05; public class Te

再学Java 之 private、protected、public和default的作用域

前言:如果提到protected的访问控制级别,您的第一反应是"只能是子类才可以访问",那么您很可能需要往下看. 首先,大致介绍一下各个访问控制符的访问控制级别(具体的介绍很多大牛的博文都有介绍,我就不细说了,可以点击这里查看),如下图:   private default protected public 同一个类中 √ √ √ √ 同一个包中   √ √ √ 子类中     √ √ 全局范围内       √ 在这里,很多人都存在一个误区,就是,认为protected修饰的方法只能

访问控制 protected, public, private 对比

OOP 3大特性:数据抽象,继承,动态绑定 3中访问标号 protected, public, private 对比 用类进行数据抽象:用继承类继承基类的成员,实现继承:通过将基类相应函数声明为virtual,是编译器在运行时决定调用基类函数or派生类函数 完成动态绑定,即表现多态性. 多态性:利用继承和动态绑定,通过基类指针和引用来表现. 动态绑定两个条件:1. 虚函数,2. 指针或引用 class Item_book { private: std::string isdn; protecte

深入理解C++中public、protected及private用法

深入理解C++中public.protected及private用法 这篇文章主要介绍了C++中public.protected及private用法,对于C++面向对象程序设计来说是非常重要的概念,需要的朋友可以参考下 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.今天本文就来十分分析一下C++中public.protected及private用法.相信对于大家深入掌握C++程序设计会有很大的帮助. 这里我们首先要

C++中public、protected及private用法

转自:http://www.jb51.net/article/54224.htm 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂.今天本文就来十分分析一下C++中public.protected及private用法.相信对于大家深入掌握C++程序设计会有很大的帮助. 这里我们首先要明白下面几点. 1.类的一个特征就是封装,public和private作用就是实现这一目的.所以: 用户代码(类外)可以访问public成

php的public、protected、private三种访问控制模式的区别

public: 公有类型 在子类中可以通过self::var调用public方法或属性,parent::method调用父类方法 在实例中可以能过$obj->var 来调用 public类型的方法或属性 protected: 受保护类型        在子类中可以通过self::var调用protected方法或属性,parent::method调用父类方法 在实例中不能通过$obj->var 来调用  protected类型的方法或属性 private: 私有类型 该类型的属性或方法只能在该

PHP5中public, private, protected 三种类属性的区别

初学PHP,看到别人的封装的类中有这三个属性,于是查找了相关资料总结了三者的区别如下:   在子类中可以通过self::var 或self::method 来调用 ,可以通过parent::method来调用父类中的方法,但不能调用公有属性. 在实例中可以通过$obj->var或self::method 来调用 protected: 受保护类型 在子类中可以通过self::var 或self::method调用, 可以通过parent::method来调用父类中的方法在实例中不能通过$obj->