Scala 访问修饰符(private-public-protected)

基本和Java的访问修饰符一样。在scala 中也有访问修饰符,如下

Members of packages, classes, or objects can be labeled with the access modifiers private and protected, and if we are not using either of these two keywords, then access will be assumed as public. These modifiers restrict(限制和限定) accesses to the members to certain regions of code. To use an access modifier, you include its keyword in the definition of members of package, class or object as we will see in the following section.

Private members

A private member is visible only inside the class or object that contains the member definition. Following is the example:

class Outer {
   class Inner {
      private def f() { println("f") }
      class InnerMost {
         f() // OK
      }
   }
   (new Inner).f() // Error: f is not accessible
}

In Scala, the access (new Inner).f() is illegal because f is declared private in Inner and the access is not from within class Inner. By contrast, the first access to f in class InnerMost is OK, because that access is contained in the body of class Inner. Java would permit both accesses because it lets an outer class access private members of its inner classes.

Protected members

A protected member is only accessible from subclasses of the class in which the member is defined. Following is the example:

package p {
   class Super {
      protected def f() { println("f") }
   }
   class Sub extends Super {
      f()
   }
   class Other {
     (new Super).f() // Error: f is not accessible
   }
}

The access to f in class Sub is OK because f is declared protected in Super and Sub is a subclass of Super. By contrast the access to f in Other is not permitted, because Other does not inherit from Super. In Java, the latter access would be still permitted because Other is in the same package as Sub.

Public members

Every member not labeled private or protected is public. There is no explicit modifier for public members. Such members can be accessed from anywhere. Following is the example:

class Outer {
   class Inner {
      def f() { println("f") }
      class InnerMost {
         f() // OK
      }
   }
   (new Inner).f() // OK because now f() is public
}

============================END============================

时间: 2024-10-14 12:55:32

Scala 访问修饰符(private-public-protected)的相关文章

JAVA 中的权限访问修饰符(public,protected,default,private )

JAVA中有四个权限访问修饰符:public,protected,default,private 注意:这里讲的是对类中属性和方法的访问权限,并不是类的访问权限 1.default:包访问权限 如果什么也没写,默认为default.当然也可以显式得给出default权限 default修饰的属性和方法,包中的所有其他类对那个成员都有访问权限,但是对于这个包之外的所有类没有访问权限. 2.public: 接口访问权限 public修饰的属性和方法对每个类都是可见的 3.private:类内访问权限

JAVA修饰符类型(public,protected,private,friendly)

JAVA修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的不论什么类均能够訪问:protected的类.类属变量及方法,包内的不论什么类,及包外的那些继承了此类的子类才干訪问:private的类.类属变量及方法,包内包外的不论什么类均不能訪问:假设一个类.类属变量及方法不以这三种修饰符来修饰,它就是friendly类型的,那么包内的不论什么类都能够訪问它,而包外的不论什么类都不能訪问它(包含包外继承了此类的子类),因此

Scala访问修饰符(四)

Scala 访问修饰符基本和Java的一样,分别有:private,protected,public. 如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public. Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类甚至不能访问被嵌套类的私有成员. 私有(Private)成员 用private关键字修饰,带有此标记的成员仅在包含了成员定义的类或对象内部可见,同样的规则还适用内部类. class Outer{ class Inner{ pr

访问修饰符private/protected/默认(friendly)protected 方法重写,重载

访问修饰符 本类 同包 子类 其他 private True   False False    False 默认(friendly) True   True False  False protected True True  True  False public True  True  True  True 重载:方法名相同,参数列表(参数数据类型.个数等)不同 重写:有继承才有重写,子类重写方法,方法名.返回值.参数列表相同,访问修饰符不能呢比父类更严格 package com.jredu.c

详解Java中的访问控制修饰符(public, protected, default, private)

Java中的访问控制修饰符已经困惑笔者多时,其中较复杂的情况一直不能理解透彻.今天下定决心,系统.全面地研究Java中的访问控制修饰符的所有方面,并整理成这篇文章,希望有同样疑惑的读者读完后能有所收获.如果文章中出现错误,欢迎评论指出,共同交流~ 说在前面:这篇文章只研究Java中访问控制修饰符声明类的变量/方法的情况. 先抛出结论: * 成员变量/方法的访问权限 *                                        private        default  

Java关键字(一) 修饰符private、protected、public和default的作用域

我们经常用着四种修饰符去修饰变量.方法和类,但是这四种的作用域都一样吗? 其中private和public可能是最多人知道的,但是protected和default可能就不知道其具体的作用域是哪些范围.先对其四种进行说明再通过案例进行证明: public:具有最大访问权限. 可以被同一项目下的任何类所调用,一般用于对外的情况. protected:与public不同的是不同包下的类是不能使用的,但是其子孙类除外.所以我认为这是特意为子类设计的. default:它是针对本包设计的,它所修饰的在本

java四种权限修饰符(public > protected > (default) > private)

权限修饰符在哪里可以访问 (default) : 表示什么权限修饰符都不写 位置 public protected (default) private 同一个类 yes yes yes yes 同一个包 yes yes yes no 不同包子类 yes yes no no 不同包非子类 yes no no no 原文地址:https://www.cnblogs.com/zhuobo/p/10612656.html

java修饰符 protect public protected

1.private修饰词,表示成员是私有的,只有自身可以访问: 2.protected,表示受保护权限,体现在继承,即子类可以访问父类受保护成员(子类是可以访问父类的带protected修饰符的成员的),同时相同包内的其他类也可以访问protected成员. 3.无修饰词(默认),表示包访问权限(friendly, java语言中是没有friendly这个修饰符的,这样称呼应该是来源于c++ ),同一个包内可以访问,访问权限是包级访问权限:(默认情况下,是friendly类型的)  4.publ

访问修饰符(C# 参考)

第一篇 就抄写了一下下MSDN上面的东西练练手吧!!! 访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性.             本节介绍四个访问修饰符: public protected internal private 使用这些访问修饰符可指定下列五个可访问性级别: public   :访问不受限制. protected   :访问仅限于包含类或从包含类派生的类型. Internal   :访问仅限于当前程序集. protected internal:访问限制到当前程序集或从包含