在Scala中有三种用来修饰属性的关键字:
var:定义可以修改的参数
val:定义不能修改的参数
private:私有的,修饰后的内容不可再更改,不能访问
Scala有参类:
class关键字后的()中定义了参数类型用“,”分隔定义的多个参数,identifier表示参数的名字,type表示参数的数据类型,有参的参数名和参数类型是必须的,而var val关键字是不必需的。
parameter表示构造参数的名字,type表示参数类型,value表示参数值,new关键字新建对象(直接重新赋值并覆盖之前的参数值)。
Scala主构造器:
通过public关键字定义一个与类同名的方法。
语法格式:
class 类名 ([parameter1,parameter2........]){
}
Scala辅助构造器:
通过this关键字定义辅助构造器,用“,”分隔,辅助构造器没有私有化。作用:可以为类提供多种创建对象的方式
语法格式:
this ([parameter1,parameter2........]){
}
辅助构造器与主构造器的关系
辅助构造器一定会调用主构造器。当声明一个类时,只有一个构造器。如果想应用辅助构造器,
就一定要调用主构造器。当辅助构造器是类中的第一个辅助构造器时,一定会先调用主构造器,通过this.的方式调用主构造器。
辅助构造器与辅助构造器的关系
辅助构造器在应用时除了可以调用主构造器之外,还可以调用已经定义的辅助构造器。需要注意的是辅助构造器会先调用主构造器。
Scala的伴生类和对象
在java中如果一个类只允许创建一个对象,那么就把这个对象称为单例对象,创建单例类的条件是构造器必须私有化。在Scala中object是声明单例对象的关键字,identifier表示一个合法的标识符,是对象的名字。
Scala单例对象的声明方式以及与Java的不同之处:
( 1 )不是一个类型:通过object关键字创建的是一个对象,不是一个类型。
( 2 )不能使用new关键字:声明单例对象时不可以使用new关键字。
( 3 )不能传递参数:单例对象无法传递参数。
单例对象:用object关键字来创建一个单例对象。单例对象在整个应用程序中只有一个实例,适用于存放工具方法、常量或共享状态。
伴生类伴生对象:当同名的类和单例对象在同一源码文件时,这个类称为单例对象的伴生类,对象称为类的伴生对象。
伴生对象与伴生类主要有两个要点:
( 1 )必须同名。
( 2 )必须在同一个源码文件中
Scala的伴生对象和伴生类可以解决如下问题:
( 1 )生成静态成员:如果Scala中需要生成类似静态成员的应用场景,可以使用伴生对视频象解决该问题。
( 2 )伴生对象和类之间的相互访问:伴生对象和类的私有成员可以相互访问。
( 3 )构建单例对象:这一点与静态成员问题相似。
联系
1.面向对象的三个特征是?
封装,继承,多态。
2.定义每个对象都具有的行为动作叫什么?定义每个对象所具有的特征是什么?
方法 定义对象具有的行为动作;属性 每个对象所具有的特征。
3.在定义class时,使用private修饰的属性有什么特点?
private修饰后的内容不可再更改
4.什么是主构造器?
构造器是为类创建对象,是创建对象的入口。
5.如何定义辅助构造器?
通过this关键字定义辅助构造器。
6.辅助构造器的作用是什么?
可以为类提供多种创建对象的方式。
7.Scala使用什么关键字来定义单例对象?
object是声明单例对象的关键字。
8.什么是伴生类和伴生对象,如何定义伴生类和伴生对象?
当同名的类和单例对象在同一源码文件时,这个类称为单例对象的伴生类,对象称为类的伴生对象。
9.伴生类和伴生对象的应用场景?
①生成静态成员;
②伴生对象和类之间的相互访问;
③构建单例对象。