在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的单例对象
object关键字来创建一个单例对象。单例对象在整个应用程序中只有一个实例,适合用于存放工具方法、常量或共享状态。
scala的伴生类和伴生对象
Scala的伴生对象与伴生类的定义
伴生类伴生对象:当同名的类和单例对象在同一源码文件时,这个类称为单例对象的伴生类,对象称为类的伴生对象。这两者是相互的。
Scala的伴生对象与伴生类主要有两个要点:
(1)必须同名。
(2)必须在同一个源码文件中
伴生对象与伴生类的解决的问题
Scala是比Java更加面向对象的编程语言,面向对象说明一切皆对象,但是在Java中有静态的成员,
静态成员属于类不属于对象。而Scala中没有静态成员这个概念,没有static关键字。Scala的伴生对象和伴生类可以解决如下问题。
(1)生成静态成员:如果Scala 中需要生成类似静态成员的应用场景,可以使用伴生对象解决该问题。
(2)伴生对象和类之间的相互访问:伴生对象和类的私有成员可以相互访问。
(3)构建单例对象:这一点与静态成员问题相似。
【访问私有方法】
【小习】
1.面向对象的三个特征是?
封装,继承,多态。
2.定义每个对象都具有的行为动作叫什么?定义每个对象所具有的特征是什么?
方法 定义对象具有的行为动作;属性 每个对象所具有的特征。
3.在定义class时,使用private修饰的属性有什么特点?
private修饰后的内容不可再更改
4.什么是主构造器?
构造器是为类创建对象,是创建对象的入口。
5.如何定义辅助构造器?
通过this关键字定义辅助构造器。
6.辅助构造器的作用是什么?
可以为类提供多种创建对象的方式。
7.Scala使用什么关键字来定义单例对象?
object是声明单例对象的关键字。
8.什么是伴生类和伴生对象,如何定义伴生类和伴生对象?
当同名的类和单例对象在同一源码文件时,这个类称为单例对象的伴生类,对象称为类的伴生对象。
9.伴生类和伴生对象的应用场景?
①生成静态成员;
②伴生对象和类之间的相互访问;
③构建单例对象。