文章目录
面向对象编程(基础部分)
1. 类与对象
1.1 定义类
-
基本语法
[修饰符] class 类名 { 类体 }
-
scala
中,类并不声明为public
,所有这些类都具有公有可见性。 -
一个
scala
源文件可以包含多个类,而且默认都是public
。
1.2 属性/成员变量
- 如果赋值为
null
,则一定要加类型,因为不加类型,那么该属性的类型就是Null
类型。 - 如果在定义属性时,暂时不赋值,也可以使用
_ (下划线)
,让系统分配默认值。
1.3 创建对象
scala
在声明对象变量时,可以根据创建对象的类型自动推断,所以类型声明可以省略,但当类型和后面new
对象类型有继承关系即多态时,就必须写了。
2. 方法
-
基本语法
def 方法名(参数列表)[: 返回值类型] = { 方法体 }
3. 构造器
3.1 介绍
Scala
构造对象也需要调用构造方法,而且可以有任意多个构造方法(重载)。Scala
类的构造器包括:主构造器和辅助构造器。
3.2 构造器的基本语法
class 类名(形参列表) { // 主构造器
// 类体
def this(形参列表) { // 辅助构造器
}
def this(形参列表) { // 辅助构造器可以有多个
}
}
- 辅助构造器的名称为
this
,可以有多个,编译器通过不同参数来区分。
3.3 构造器的注意事项和细节
Scala
构造器作用是完成对新对象的初始化,构造器没有返回值。- 主构造器的声明直接放置于类名之后。
- 主构造器会执行类定义中的所有语句。(构造器也是方法)
- 如果主构造器无参数,小括号可以省略,构建对象时调用的构造方法的小括号也可以省略。
- 辅助构造器名称为
this
,多个辅助构造器通过不同参数列表进行区分,底层就是构造器的重载。 - 如果想让主构造器变成私有的,可以在
()
之前加上private
,这样用户只能通过辅助构造器来构造对象了。 - 辅助构造器的声明不能和主构造器的声明一致,会发生错误,即构造器名重复。
4. 属性高级
4.1 构造器参数
Scala
类的主构造器的形参未用任何修饰符修饰,那么这个参数就是局部变量。- 如果参数使用
val
关键字声明,那么Scala
会将参数作为类的私有的只读属性使用。 - 如果参数使用
var
关键字声明,那么Scala
会将参数作为类的成员属性使用,并会提供属性的xxx()
和xxx_$eq
方法,即这时的成员属性是私有的,但是可读写。
4.2 Bean 属性
- 给某个属性加入
@BeanProperty
注解后,会生成getXxx
和setXxx
的方法,并且与原来底层自动生成的xxx
和xxx_$eq
方法,没有冲突,两者可以共存。
4.3 对象创建的流程分析
- 加载类的信息(属性信息,方法信息)。
- 在内存中(堆)开辟空间。
- 使用父类的构造器进行初始化。
- 使用主构造器对属性进行初始化。
- 使用辅助构造器对属性进行初始化。
- 将开辟的对象的地址赋给声明的引用。