温故知新|学习笔记

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

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

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


温故知新

 

内容介绍:

封装

继承

三、静态属性和静态方法

 

一、封装

1、从封装的注意事项讲到特质继承超类字段匿名子类伴生对象等等简单进行回顾打开手册定为二级简洁很多找到封装面向对象编程三大特征下的 scala 封装的注意事项封装从整体是 scala 的机制它的逻辑跟 java 是一样的仅仅是形式上发生变化在 scala 中它本身只有 private 和 public也就是它把原先的四种访问设置简化到两种它的逻辑变的很简单可以访问或不可以访问访问主要分为几个层面第一任何地方都可以访问全局的范围就是 public第二子类中可以访问就是 private第三是私有的就是在本类或者半生类可以访问三大类简化了封装的逻辑

2、从形式上它也提供了很多自动的方法比如不需要写什么只需要声明属性,本身就自动提供了对应 setter/getter 方法,属性的修饰符不一样生成的 setter/getter 也不一样比如声明的是 val就只生成读的方法如果是 var 就是读写方法如果前面加 private方法的修饰符就是 private如果没有加 private生成的setter/getter方法就是 public

 

二、继承

1、继承的原理跟 java 是一样的就是整个 java 为什么有以及它的机制是一样的区别主要是方法重写这部分,scala 明确规定,重写一个非抽象方法需要用 override 修饰符。

2、类型转换的经典使用,isInstanceOf 方法和 asInstanceOf 方法后面再写设计模式时还会用到这两个方法

3、超类的构造scala 的构造顺序如下

//1 .Person... 完成对父类的构造

//2.默认的名字

//3.Emp .... 完成对子类的构造

//4.Emp 辅助构造器~

如果还有父类就继续从上面进行追踪

4、在 scala 中覆写字段是用过方法进行实现的就是在 scala 中覆写字段通过方法的重写进行实现的java 字段的重写准确的讲是字段的隐藏这里面包含两个 java 的重要机制一个机制是动态绑定机制这个动态绑定机制也延续到了 scala 中还有一个就是java字段其实是隐藏

5、抽象类跟 java 几乎一样

6、作业题按照 java 的代码改写即可


三、静态属性和静态方法

1、scala 中如何实现静态的使用效果或者scala 中静态机制是什么首先从语法层面scala 中它去掉了scala关键字但是为了跟 java 做到无缝接轨它使用伴生对象实现静态的使用效果第二点是在 scala 静态的底层它实际上是用伴生对象对应的 MODULES 实现静态对象通过这个对象实现静态的使用效果因为 scala 只做了包装它的核心是从底层原理看,伴生对象实现静态特性是依赖于 public static final MODULES 实现的。

2、apply 方法当创建对象时不用 new直接把它放在 apply 中通过 apply 方法加上伴生对象可以实现单例在构造期可以加 private如果实现某个对象的单例创建 singletondome选择 object

image.png

package com. atguigu. chapter08. homework

object SingleTonDemo {

//实现单例

def main(args: Array[String]): Unit = {

val dog = Dog   new不出运行会显示报错因为加了 private如果打开创建是没有问题的运行不会报错

Println(dog)执行代码

}

class Dog private() { 有一只狗加 private 把构造器挡住了

}

object Dog { 充分利用伴生对象在伴生对象中可以使用对应的伴生类的私有方法和私有属性

var.. singleDeg:Dog=null  初始化给它一个值

def apply(): Dog = {  公开的 apply 方法

if (singleDog==null) {  如果 singleDog 等于 null

singleDog=new Dog( )做判断是不是已经有实例对象

}

singleDog返回

}

运行代码可以看到有一个dog@4ec6a292

package com. atguigu. chapter08. homework

object SingleTonDemo {

//实现单例

def main(args: Array[String]): Unit = {

val dog = Dog  因为是 val 所以更改不了

val dog2 = Dog再获取一个 dog2

Println(dog)执行代码

Println(dog2)看这两只狗是不是同一只狗

}

class Dog private() {

}

object Dog {

var.. singleDeg:Dog=null  

def apply(): Dog = {

if (singleDog==null) {

singleDog=new Dog( )

}

singleDog

}

再运行代码发现这两只狗是同一只狗充分利用伴生对象和伴生类的关系

3、接口里面有很多基本的语法

4、特质的基本使用和再说明特质的底层分析图就是根据 trait 中只有抽象方法和非抽象方法对应的内容是不一样的

相关文章
|
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
|
12天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
666 14
|
7天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
475 5