开发者学堂课程【Scala 核心编程-基础:主构造器和辅助构造器的细节】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8950
主构造器和辅助构造器的细节
内容简介
一、对之前所讲的进行版述
一、对之前所讲的进行版述
先把之前所讲的内容进行版述。
首先讲了对构造器的介绍,其次讲了构造器的基本语法,然后讲了构造器的快速入门案例,之前在讲快速入门案例时,并没有详解,只是大概了解了以下,案例会放在笔记中;
再次讲了构造器的五个注意事项和细节,有以下内容:
1、Scala 构造器作用是完成对新对象的初始化,构造器没有返回值;
2、主构造器的声明直接放置于类名之后[反编译];
3、主构造器会执行类定义中的所有语句,代码中除了函数,其他都会被执行;
4、如果主构造器无参数,小括号可省略,构建对象时调用的构造方法的小括号也可以省略。如:
class AA{
}
val a = new AA
val b = new AA()
5、辅助构造器名称为 this(这个和 Java 是不一样的),多个辅助构造器通过不同参数列表进行区分,在底层就是构造器的重载。里面有继承的逻辑,主要是对父类的构造逻辑。
接下来对剩下两个细节进行讲解。
6、如果想让主构造器变成私有的,可以在()之前加上.private,在形参列表前加 Private 便可以了,这样用户只能通过辅助构造器来构造对象了【反编译】
代码设置:class Person2 private( ){}
7、辅助构造器的声明不能和主构造器的声明一致,会发生错误(即构造器名重复)。因为完全一样,代表着写了两个完全一样的方法,这样肯定是跑不起来的,虽然主构造器是主构造器,但反编译之后,地位跟辅助编译器是完全一样的。
举例:
在代码 class Person2 private( )中的括号里添加 str:string,写成 class Person2 private(str:string )代码,代码中的 this 部分便会被标红,这样写本就有了主构造器,然后添加的部分跟字符串没有不同,要想 this 部分不被报错,可以在 this 后面加上字符串,但是建议不要有这种做法,这样很容易导致构造器重名。
到这里,构造器的细节便结束了。