Scala访问控制权限详解与应用实践 #Scala #scala

news/2024/11/7 19:55:28/

Scala访问控制权限

  1. 默认访问权限

    • 描述:Scala中的默认访问权限相当于Java中的public。如果一个变量或方法没有任何修饰符,就代表默认访问权限。
    • 作用域:全局,可以在任何地方访问。
  2. protected访问权限

    • 描述:protected修饰符表示该属性或方法只能在当前类及其子类中访问。
    • 作用域:当前类及其子类。
  3. private访问权限

    • 描述:private修饰符表示该属性或方法只能在当前类内部访问。
    • 作用域:当前类内部。
  4. private[this]访问权限

    • 描述:private[this]修饰符表示该属性或方法只能在当前类内部访问,但不能通过子类访问。
    • 作用域:当前类内部,不能通过子类访问。

示例代码

 

scala

class MyClass {// 默认访问权限var defaultVar: Int = 10// protected访问权限protected var protectedVar: Int = 20// private访问权限private var privateVar: Int = 30// private[this]访问权限private[this] var privateThisVar: Int = 40
}class SubClass extends MyClass {// 可以访问protectedVarprintln(protectedVar)// 不能访问privateVar// println(privateVar) // 错误// 不能访问privateThisVar// println(privateThisVar) // 错误
}

扩展示例代码

 

scala

class Student123 {// 1. 默认权限方法类似于Java中的publicval name: String = "小花"// 2. 私有属性。 类的内部。 不能继承private val score: Int = 59// 3. 受保护的。可以继承protected val car: String = "baxputluk halidam"def say(): Unit = {println(s"Name: $name, Score: $score, Car: $car")}
}object Student123 {def run(obj: Student123): Unit = {// 由于是伴生对象,可以直接访问类中的所有成员,包括私有成员println(s"Name: ${obj.name}, Score: ${obj.score}, Car: ${obj.car}")}
}// 子类
class SubStudent extends Student123 {def test(): Unit = {// 可以访问受保护的属性carprintln(s"Name: ${this.name}, Car: ${this.car}")// 尝试访问私有属性score将导致编译错误// println(this.score) // 错误}
}object Test22_01 {def main(args: Array[String]): Unit = {val s = new Student123()val s1 = new SubStudent()s.say()Student123.run(s)s1.test()}
}

总结

Scala的访问控制权限提供了灵活的访问控制机制,可以根据需要选择合适的访问权限,以保护类的内部状态和实现细节。通过合理使用这些访问权限,可以有效地控制代码的访问权限,提高代码的安全性和可维护性。在实际开发中,根据成员变量和方法的使用场景,选择适当的访问权限是非常重要的


http://www.ppmy.cn/news/1545150.html

相关文章

OKHTTP断点续传

OKHTTP断点续传 文章目录 OKHTTP断点续传HTTP断点续传知识点RangeContent RangeEtag&If-Range(文件唯一标志) OKHTTP断点下载OKHTTP 简单短断点下载代码示例 Android 断点续传一直是面试的高频问点,这里从HTTP断点续传知识和Android续传思…

[零基础学python]系列,第四章:遨游变量的海洋(3)!

Hello!我是撞走不开心的龙跃!今天我们还是请来了可爱可爱D皮卡丘来陪同我们讲课哦! 废话不多说!咱们直接开干!今天这节课词汇可能有点多!肝酱们保护好自己的肝哦! 请阅读目录: 输…

软件测试学习笔记丨Flask操作数据库-对象与数据模型

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/23440 对象与数据模型 数据模型:是数据特征的抽象,抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架…

Scala 中的Set

Set :集合。表示没有重复元素的集合, 特点: 唯一,无序。 1. Set 有可变 (mutable) 和不可变 (immutable) 两种类型。不可变 Set 创建后元素不能修改; 可变 Set 可对元素进行添加、删除等操作,这两种类型…

spring-data-jpa 一对多,多对一,多对多

spring-data-jpa 一对多,多对一,多对多 首先介绍几个主要用到的注解 ManyToOne 多对一ManyToMany 多对多OneToMany 一对多JoinColumn 两表之间的关联JsonIgnoreProperties 忽略属性(避免Jason套娃) 比如我有两张表:…

Apache POI(java操作Miscrosoft Office)

Apache POI 1.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下,POI 都是用于操作 Excel 文件。 Apache POI 的应用场景&a…

5分钟科普:AI网关是什么?应用场景是什么?有没有开源的选择?

AI网关的功能及其定义 AI网关位于企业应用与内外部大模型调用的交汇点,能够灵活地将请求转发给内部自建模型或外部大模型服务提供商,甚至海外的服务商。它管理着企业所有的AI出口流量,为企业内的不同团队提供了多方面的优势。 对于开发团队…

【第六章·循环控制结构】第五节:流程的转移控制

目录 goto 语句 break 语句 示例:使用 goto 和 break 实现读入正整数程序,遇负数终止 用 goto 语句编程实现 用 break 语句编程实现 break 语句与 goto 语句的区别 continue 语句 break 语句与 continue 语句的区别 示例:使用 conti…