Scala_修饰符
Scala访问修饰符和Java基本一样,分别有private、protected、public。默认缺省情况下,Scala对象的访问级别是public。
私有成员:用private关键字修饰的成员仅在包含了成员定义的类内部或对象内部可见。Java中允许这两种访问,它允许外部类访问内部类的私有成员。
class test{}class Outer{
class Inner{
private def p(){
println( "p")
}
class InnerMost{
p() //正确
}
}
//(new Inner).f("Outer") //错误,外层类不能访问被嵌套类的私有成员,Java中支持
}
保护成员:Scala比Java中更严格。只允许保护成员在定义了该成员的类的子类中被访问。Java中除定义了该保护成员的类的子类中可被访问,同一个包下的其他类也可以进行访问。
package p{
class Supper{
protected def p(){
println("p")
}
}
class Sub extends Supper{
p() //正确
}
class other{
// (new Supper).p() //错误,只有子类可以。java支持,protected成员在同包下类中也可访问
}
}
公共成员:默认public,这样的成员在任何地方都可以被访问。
class test{}class Outer{
class Inner{
def p(){
println( "p")
}
class InnerMost{
p() //正确
}
}
//(new Inner).f("Outer") //正确
}
作用域保护
Scala中访问修饰符可以通过使用限定词强调。格式private[x] 或 protected[x]
X指某个所属的包、类、单例对象。private[x],读作“这个成员除了对[…]中的类或[…]中的包中的类及它们的伴生对象可见外,对其他所有类都是private
Private[this] val x,只能被this访问,即只能被当前对象访问
Private val x,可以被另一个对象访问
Java的访问权限表
不写(default)默认:包内可访问
Private私有:类内可访问
Protected保护:包内和子类可访问
Public公有:都可访问
Scala_修饰符的更多相关文章
- JAVA语言中的修饰符
JAVA语言中的修饰符 -----------------------------------------------01--------------------------------------- ...
- Java类访问权限修饰符
一.概要 通过了解Java4种修饰符访问权限,能够进一步完善程序类,合理规划权限的范围,这样才能减少漏洞.提高安全性.具备表达力便于使用. 二.权限表 修饰符 同一个类 同一个包 不同包的子类 不同包 ...
- iOS 方法修饰符
一.NS_DESIGNATED_INITIALIZER 用来修饰init方法,被修饰的方法称为designated initializer:没有被这个修饰的init方法称为convenience i ...
- C#基础回顾(一)—C#访问修饰符
一.写在前面的话 好久没有停下来总结自己,转眼间15年过去好些天,回首过去的日子,亦或失去,亦或所得!生活的节奏,常常让我们带着急急忙忙的节奏去追赶,也许这并不是每个人所期望的生活方式!于他人,于自己 ...
- 关于Java语言中那些修饰符
一.在java中提供的一些修饰符,这些修饰符可以修饰类.变量和方法,在java中常见的修饰符有:abstract(抽象的).static(静态的).public(公共的).protected(受保护的 ...
- C#基础知识八之访问修饰符
1. 类的访问修饰符 修饰符 访问权限 无或者internal 只能在同一个程序集中访问类 public 同一个程序集或引用该程序集的外部都可访问类 abstract或internal abstra ...
- java访问修饰符
了解面向对象思想的同学们,都知道"封装"这一基本特征,如何正确运用访问修饰符,恰恰能体现出封装的好坏. java访问修饰符有四个: 1)public:访问权限最高,其修饰的类.类变 ...
- java静态修饰符static的使用
class Person { private String name; private int age; /* * 假设每个Person对象的国籍都一样, * 那么每次调用都要赋值就会不合理. * 使 ...
- Scala访问修饰符(四)
Scala 访问修饰符基本和Java的一样,分别有:private,protected,public. 如果没有指定访问修饰符符,默认情况下,Scala对象的访问级别都是 public. Scala ...
随机推荐
- 12 tensorflow实战:修改三维tensor矩阵的某个剖面
# -*- coding: utf-8 -*- """ Created on Mon Apr 22 21:02:02 2019 @author: a "&quo ...
- leetcode 之 Degree of an Array
1.题目描述 Given a non-empty array of non-negative integers nums, the degree of this array is defined as ...
- webpack-易混淆部分的解释
原文链接: https://medium.com/@rajaraodv/webpack-the-confusing-parts-58712f8fcad9 webpack的核心哲学 1. 任何皆模块 正 ...
- SSL Certificates深入理解
http://www.littlewhitedog.com/content-71.html https://www.verisign.com/en_US/website-presence/websit ...
- python之系统命令
subprocess执行系统命令 call:执行命令,返回状态码 #!/usr/bin/env python # _*_ coding:utf-8 _*_ __Author__ = 'KongZhaG ...
- Oracle 查看锁情况
/*查看锁(lock)情况*/ SELECT ls.osuser os_user_name, ls.username user_name, decode(ls.type, 'RW', 'Row wai ...
- [SQL SERVER] 映射网络驱动器,让SQL服务器可见
在服务器上运行: EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXEC sp_configure 'xp_cmds ...
- [控件] 动态实时设置CAShapeLayer贝塞尔曲线的坐标点
动态实时设置CAShapeLayer贝塞尔曲线的坐标点 效果图: 源码: PathDirectionView.h 与 PathDirectionView.m // // PathDirectionVi ...
- Build path entry is missing: config 引起的 The project: configwhich is referenced by the classpath, does not exist.
运行Junit的时候报错, The project: XXXX which is referenced by the classpath, does not exist. 在Java Build Pa ...
- 铁乐学Python_day08作业
1. 文件a.txt内容:每一行内容分别为商品名字,价钱,个数. apple 10 3 tesla 100000 1 mac 3000 2 lenovo 30000 3 chicken 10 3 通过 ...