Scala 面向对象编程
类、继承、方法与构造器
汇报人:第四组
目录
- Scala 与面向对象基础
- 类与构造器机制
- 继承与多态体系
- 进阶与总结
一、Scala 与面向对象基础
1. Scala 简介
- 多范式语言:融合面向对象(OOP)与函数式编程(FP)
- 运行平台:基于 JVM
- 语言起源:由 Martin Odersky 于 2003 年在 EPFL 创建
- 特点:
- 静态强类型
- 与 Java 无缝互操作
- 支持模式匹配、隐式转换等
- 应用场景:
- Apache Spark 核心语言
- 被 LinkedIn、Twitter 等公司使用
2. 面向对象核心思想
(1)封装
- 将数据与行为绑定
- 隐藏内部实现,对外提供接口
- 提升安全性与可维护性
(2)继承
- 基于已有类扩展新类
- 提高代码复用率
- 构建层次结构
(3)多态
- 同一接口,不同实现
- 支持动态绑定
- 提高系统扩展性
二、类与构造器机制
1. 类的定义与对象创建
1 | |
class:定义类new:创建对象(可省略)- 成员:
- 属性:
val / var - 方法:
def
- 属性:
2. 主构造器(Primary Constructor)
1 | |
特点:
- 与类定义合并
- 参数直接成为构造逻辑
- 修饰符决定可见性:
val:只读属性var:可变属性- 无修饰符:仅构造参数
优势:
- 代码简洁
- 减少样板代码
- 更安全(推荐不可变)
3. 辅助构造器(Auxiliary Constructor)
1 | |
规则:
- 必须命名为
this - 第一行必须调用主构造器
- 不能定义字段
- 用于提供多种初始化方式
三、继承与多态体系
1. 继承(extends)
1 | |
特点:
- 单继承
- 默认继承
AnyRef - 支持多层继承
2. 方法重写(override)
1 | |
规则:
- 必须使用
override - 方法签名必须一致
- 常见重写方法:
toStringequalshashCode
3. 构造器与继承
- 子类必须调用父类构造器
- 使用
super - 执行顺序:
- 父类初始化
- 子类初始化
4. 多态与类型检查
1 | |
- 父类引用指向子类对象
- 动态绑定方法
类型转换:
1 | |
5. 抽象类与特质
| 对比 | 抽象类 | 特质 |
|---|---|---|
| 定义 | abstract class | trait |
| 继承 | 单继承 | 多继承(with) |
| 构造参数 | 支持 | 不支持 |
| 用途 | 类型层次 | 行为复用 |
四、进阶与总结
1. 单例对象(object)
1 | |
特点:
- 全局唯一实例
- 无需
new - 线程安全
应用:
- 工具类
- 常量管理
- 程序入口
2. 封装与访问控制
private:限制访问范围- 伴生对象(Companion Object):
- 与类同名
- 可互访私有成员
示例:
1 | |
3. 常见误区
- 忘记
override - 构造器调用错误
- 特质初始化顺序问题
- 滥用
var
4. 最佳实践
- 始终使用
override - 合理设计构造器
- 使用
lazy val - 优先使用不可变变量(
val)
总结
Scala 面向对象编程的核心优势:
- 简洁优雅的语法
- 强类型安全
- OOP + FP 融合
- 高扩展性与可维护性