温故知新|学习笔记

简介: 快速学习温故知新。

开发者学堂课程【Scala 核心编程-基础:温故知新】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/9014


温故知新

 

内容介绍

动态混入

二、叠加特质

特质构造顺序

四、扩展类的特质

五、嵌套类

六、类型投影

七、隐式转换

 

一、动态混入

1、使用方式和基本语法需要了解动态混入的基本语法如下

val oracleDB = new OracleDB with Operate3

用with关键字直接将需要混入的特质混进去如果有多个需要混入就在后面加 with 特质即可

2、动态混入的好处是可以实现 ocp 原则开闭原则就是在用动态混入的方式给一个对象增加功能时并不会影响类的本身这是动态混入最基本的原则和规则

 

二、叠加特质

1、叠加特质是混入时有多个特质一旦实现混入多个特质就有很多语法规则需要去遵守这里面有两个规则特别重要第一个在混入时它的构建顺序是什么第二个当叠加特质之后执行叠加过后产生的方法时它的执行方法顺序是什么这是一个考点也是看源代码的核心点

2、叠加特质的构建顺序执行方法顺序在这里面用到的 super 关键字是什么

叠加特质的构建顺序是从左往右在构建过程中它仍然遵循如果构建时混入特质父特质也要往上追执行方法的顺序是从右往左如果在这个过程中让 super 指向父特质在 super 后面加上中括号里面写它父特质的名称

3、如果想要调用具体特质的方法,可以指定: super[特质(.xxx(···)其中的泛型必须是该类的直接超类类型

 

三、特质构造顺序

在进行混入时它首先混入的类也有构造器时要注意顺序第一种和第二种主要的区分是第一种声明类的同时混入特质先是把它当作一个整体在混入时这个对象并没有创建成功所以它是按照声明的混入顺序一步一步构建的第二种在构建对象时动态混入特质可以理解成先把对象创建好之后再逐一混入特质

 

四、扩展类的特质

一个特质可以继承另外一个类特质就可以用继承这个类的方法相当于扩展了 trait 的功能在扩展功能之后用混入的方式混入特质时那么对象就拥有了相应的功能这就是扩展类的特质


五、嵌套类

1、嵌套类更多的情况是源码会用到一般情况下在开发时应当避免使用到嵌套类实际上如果真的用到嵌套类说明水平很高做 java 开发很少用到内部类更多的是用来看源码可能有面试的时候会问到

2、scala 嵌套类和 java有什么区别有两点区别第一个是嵌套类的对象是跟外部的对象相关的java 是创建一个内部类的对象它只跟内部类型有关系在 scala 中Scala 创建内部类的方式和 Java 不一样,将 new 关键字放置在前,使用对象.内部类的方式创建说明内部类或者是嵌套类它其实跟外部外部对象有密切关系但是 java 不是这样的java 只能内部类型有关系直接导致一个问题如何解决这个问题在 scala 中提供了类型投影解决这个问题

 

六、类型投影

前面加上外部类的名称#再写上内部类的名字这样称之为类型投影它的作用就是屏蔽外部对内部对象的影响

 

七、隐式转换

1、隐式转换在看代码时有时输入一个值但是可以通过其实是隐式转换起了很大的作用

2、比如 val num: Int=3.53.5给了 int写一个隐式转换的函数

implicit def f1(d:Double): Int= {//底层 生成f1$1

d.toInt

}

它把隐式函数作用在3.5上因此在看源代码看不懂时可以反编译查看

3、idea    就是只要看到有实线的下划线一定会出现隐式转换

相关文章
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1111 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1787 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
711 152
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
475 5
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
666 14