封装注意事项|学习笔记

简介: 快速学习封装注意事项。

开发者学堂课程【Scala 核心编程-基础封装注意事项】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8967


封装注意事项

 

内容介绍

一、细节1

二、细节2

三、细节3

四、细节4

 

本节主要讲述 Scala 封装的注意事项和细节,前面讲的 Scala 的封装特性和 Java 是一样的,下面将介绍Scala封装的其他特点。


一、细节1

Scala 中为了简化代码的开发,当声明属性时,本身就自动提供了对应 setter/getter 方法,如果属性声明为 private的,那么自动生成的 setter/getter 方法也是 private 的,如果属性省略访问权限修饰符,那么自动生成的setter/getter 方法是 public的。

在 scala 中加入私有的东西,会对将来生成的方法产生最大影响,案例中只有 private 和 public。
案例:
public class Monster {  private int age = 1;  private String name =“;   private double sal = 0.01D;   public int age ()    {    return this.age; }public void age_$eq(int x$1) { this.age = x$1;  }private String name() { return this.name; }private void name_$eq (String x$1) { this.name = x$1; }    public double sa1() ( return this.sal; }  public void sa1_$eq(double x$1) { this.sal = x$1;}


二、细节2

如果只是对一个属性进行简单的 set 和 get,只需要声明该属性(属性使用默认访问修饰符)不用写专门的 getset,默认会创建,访问时,直接对象名.变量名,这是为了保持访问一致性。


三、细节3

从形式上看 dog.food 直接访问属性,实质上底层仍然是访问的方法,从反编译的代码中可以看出。

这个特点产生了一个新的知识点,叫做属性的重启。在 Java 中可以直接访问属性,而在 scala 中都是通过底层的方法访问属性。


四、细节4

通过上面的特性,目前很多新的框架,在进行反射时,也支持对属性的直接反射,在底层会生成对应的方法。

直接写个属性就能对其进行反射,属性全是私有的,方法中 public 是私有的。

相关文章
|
Go 开发者
Go语言并发模型概览:CSP模型解析
【2月更文挑战第17天】Go语言以其强大的并发处理能力在编程领域崭露头角。其中,CSP(Communicating Sequential Processes)模型作为Go语言并发模型的核心之一,在并发编程中发挥着至关重要的作用。本文将深入解析CSP模型的基本原理及其在Go语言中的应用,帮助读者更好地理解Go语言的并发编程特性。
|
SQL 存储 druid
Minerva -- Airbnb 的大规模数据指标系统 Part 3
Minerva -- Airbnb 的大规模数据指标系统 Part 3
795 0
Minerva -- Airbnb 的大规模数据指标系统 Part 3
|
存储 Web App开发 消息中间件
原来10张图就可以搞懂分布式链路追踪系统原理
原来10张图就可以搞懂分布式链路追踪系统原理
原来10张图就可以搞懂分布式链路追踪系统原理
|
缓存 NoSQL 调度
【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案
【redis】ssm项目整合redis,redis注解式缓存及应用场景,redis的击穿、穿透、雪崩的解决方案
420 0
|
9月前
|
机器学习/深度学习 传感器 自动驾驶
从 2D 到 BEV,LSS 技术如何重塑自动驾驶感知?
LSS(Lift-Splat-Shoot)是将多视角图像转换为BEV表示的经典技术,算法虽然老,但应用依然非常广泛
650 23
从 2D 到 BEV,LSS 技术如何重塑自动驾驶感知?
|
11月前
|
缓存 安全 算法
Java 多线程 面试题
Java 多线程 相关基础面试题
205 2
|
UED
如何申请国际网络专线?
【10月更文挑战第9天】如何申请国际网络专线?
771 2
|
小程序 JavaScript 前端开发
微信小程序开发必备前置知识:基本代码构成与语法
【8月更文挑战第8天】微信小程序的基本代码构成与语法
528 0
微信小程序开发必备前置知识:基本代码构成与语法
|
缓存 Web App开发 自然语言处理
关于解决chatGPT注册不了报错:chatGPT邮箱不支持
ChatGPT 开放了免费注册功能。然而,在用户创建过程中,一些人遇到了如下所示的提示信息:“Oops! The email you provided is not supported”,中文翻译为“糟糕,邮箱不支持”。
1134 4
|
存储 安全 开发工具
oss加密的工作流程
阿里云OSS提供服务器端(SSE-KMS BYOK、SSE-KMS默认密钥)和客户端(CSE)加密。SSE-KMS通过KMS托管密钥或默认密钥在服务器端自动加密/解密对象,减轻用户负担。CSE则在客户端加密数据,使用SDK和用户密钥,灵活性高但管理复杂。两者均保障数据传输和存储的安全。用户可依据安全需求和合规性选择加密方式。
465 4