开发者学堂课程【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 是私有的。