温故知新|学习笔记

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

开发者学堂课程【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 中只有抽象方法和非抽象方法对应的内容是不一样的

相关文章
|
6天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
10天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
617 215
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
857 61
|
8天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1294 157
|
5天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
243 138
|
7天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
536 109