Scala相关知识学习总结4

1.抽象类:用 abstract 关键字定义,含抽象属性(声明无初始化)和抽象方法(无方法体),子类继承需实现抽象方法,可使用 super 关键字调用父类实现。

2. 匿名子类:类似Java,通过包含定义或重写代码块创建。

3. 单例对象:Scala无静态概念,单例对象可替代静态功能,用 object 声明,与类名一致时可伴生,成员可通过伴生对象名调用。

4. apply 方法:通过该方法可不使用 new 创建对象, apply 语句实际调用对应对象的 apply 方法。

5. 特质(trait)

  • 定义使用:可被混入类,实现类似接口功能,用 trait 声明,可定义属性、方法,可被类 extends 混入或与类 with 组合使用。

6.特质声明

基本语法

  • 基本语法:无父类时, class 类名 extends特质1 with 特质2... ;

有父类时, class 类名 extends 父类 with 特质1 with 特质2... 。

  • 说明:类与特质是继承关系,继承特质时首用 extends ,后续用 with ,同时继承父类和特质时,父类置于 extends 后。

  • (1)特质可含抽象与具体方法;(2)类可混入多个特质;(3)Java 接口可作Scala 特质; (4)动态混入可灵活的扩展类的功能,创建对象时混入 trait,而无需使类混入该 trait,如果混入的 trait 中有未实现的方法,则需要实现。

7. 特质叠加

  • 冲突类型及解决:类混入多个trait 时,若trait 有相同方法会产生继承冲突。

第一种是无关联trait 间冲突,在类中重写解决;

第二种是有继承关系的"钻石问题",采用特质叠加策略,即叠加冲突方法,通过示例展示叠加效果。

8.特质自身类型

  • 说明:可实现依赖注入功能。

  • 特质和抽象类的区别

(1) 类可方便混入多个特质,但只能扩展一个抽象类,优先用特质。

(2) 抽象类能定义带参数构造函数,必要时选用。

  • 冲突解决:多个trait方法冲突时,在类中重写解决。

  • 调用顺序:涉及 super 调用时,按混入顺序反向调用。

9.类型检查与转换:

  • 说明:obj.isInstanceOf[T] 判断对象是否为 T 类型,

obj.asInstanceOf[T] 将对象转换为 T 类型;

classOf 获取对象的类名。

10. 枚举:需继承 Enumeration ,通过 Value 定义枚举值。

11. 集合:包含序列( Seq )、集( Set )、映射( Map ),有可变与不可变版本,操作类似Java集合 。

12. 数组

  • 不可变数组:(1)new 是关键字

(2)[Int]是指定可以存放的数据类型,如果希望存放任意数据类型,则指定Any

(3)(10),表示数组的大小,确定后就不可以变化声明时指定大小或类型,可通过索引访问元素。

  • 可变数组:用 ArrayBuffer 实现添加、修改、删除元素操作,可与不可变数组转换。
相关推荐
qqxhb34 分钟前
系统架构设计师备考第68天——大数据处理架构
大数据·hadoop·flink·spark·系统架构·lambda·kappa
思通数科多模态大模型1 小时前
扑灭斗殴的火苗:AI智能守护如何为校园安全保驾护航
大数据·人工智能·深度学习·安全·目标检测·计算机视觉·数据挖掘
high20111 小时前
【Git】-- Rebase 减少 Commit 次数指南
大数据·git·elasticsearch
Ace_31750887761 小时前
淘宝店铺全量商品接口实战:分类穿透采集与增量同步的技术方案
大数据·数据库·python
盈飞无限3 小时前
质量智能革命:SPC软件助力中国制造驶入高质量发展快车道
大数据·人工智能·制造
老蒋新思维4 小时前
2025 创客匠人全球创始人 IP + AI 万人高峰论坛:破局创业困境,拥抱无限未来
大数据·网络·人工智能·网络协议·tcp/ip·创客匠人·知识变现
api_180079054605 小时前
【技术教程】Python/Node.js 调用拼多多商品详情 API 示例详解
大数据·开发语言·python·数据挖掘·node.js
hzbigdog6 小时前
php的CSV大数据导入导出的通用处理类
大数据·后端·php
Web3_Daisy7 小时前
如何在市场波动中稳步推进代币发行
大数据·人工智能·物联网·web3·区块链
yumgpkpm7 小时前
Hadoop大数据平台在中国AI时代的后续发展趋势研究CMP(类Cloudera CDP 7.3 404版华为鲲鹏Kunpeng)
大数据·hive·hadoop·python·zookeeper·oracle·cloudera