开发者学堂课程【Scala 核心编程-基础:温故知新】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8966
温故知新
内容介绍:
一、方法
二、属性高级
三、Scala 对象构建流程分析
四、包
五、包的可见性问题
六、面对对象编程方法-抽象
一、方法
1、方法是什么
方法从本质的角度来看,方法和函数是一个意思,声明规则需要参考函数式编程中的函数声明。
在使用的过程中,如果用到函数式编程,就变成函数,如果是 OP,就仍然是方法。方法和函数的定义包括运行机制,及细节都是一样的。
2、对于构造器的理解
(1)使用时间:当在 Scala 里面创建一个对象时,需要在创建时直接给它指定一些属性,这时就会用到构造器。
(2)使用注意事项:在用的时候,要注意跟 JAVA 不一样的地方就是它有主构造器和辅助构造器。主构造器是在内名后面声明的。辅助构造器它是用 ZS 关键字来进行区分。
(3)阻隔造器的方法:它会把内体里面的方法和变量定义,都执行一遍,这个是它一个特色。
二、属性高级
属性高级部分就是 VAL 和 VAR 的一个区别。
Class dog(age:int){
}
Class dog2( val age:int){
}
Class dog3(var age:int){
}
这三者的区别在于:
1. 第一个 age 就是一个局部变量,用完就结束,其实就是参数
2. 第二个 val age 说明会在 dog 内生成一个只读属性
3. 第三个 var age 说明会生成一个可读写的属性
三、Scala 对象构建流程分析
1. 加载类的信息(属性信息,方法信息)
2. 在内存中(堆)开辟空间
3. 使用父类的构造器(主和辅助)进行初始
4. 使用主构造器对属性进行初始化【age∶90,naem nul】
5. 使用辅助构造器对属性进行初始化 【 age∶20.naem 小情 】
6. 将开辟的对象的地址赋给 p 这个引用
其中第三点最为重要:当去构建一个对象的时候呢,其实它里面隐藏了一个父类构造器和组。父类会首先去调用父类的构造器。
四、包
包里面的内容特别多。包在 scala 里面功能强大。它主要体现在几下几点:
1、在一个文件里可以同时创建多个包,且在这个包里面直接可以给每一个包创建自己的内容。比如说类,class,object 等。也就是说,一个文件可以把很多东西全部搞定。
2、包还引出了一个新的一个技术:包对象。包对象最主要的作用是弥补。因为包不能去定义或者声明变量和方法,这时需要包对象来做弥补。
补充面试题:为什么给包写了包对象,包就可以直接去引用包对象的应用及方法?
回答:这时需要用包对象的底层实现机制来回答。当创建一个包对象后,会生成两个类,一个 package 和一个package$。(即使当给一个包写了一个包对象,给另外一个包又写了一个包对象,这两个包对象他们在底层生成的这个类名一定都是这个名字。)具体使用方法,其实底层还是引用了 static。
Scala 里面实现镜像单例核心就是依靠:public static final MODULE
五、包的可见性问题
案例:
package com. atguigu. chapter07 .homework
object Exercise05 {
def main(args: Array[String]): Unit = {
println("xx")
}
}
class Monster{
var age: Int=1
private var name :String=“”
protected var sal :Double = 0.01
}
此时运行,得到如下结果:
此时发现,在 scala 内把可见类型做了简化。在 scala 当中,只有两个逻辑:是否能被外界访问。如果可以被外部访问,就全部提供 public 方法,如果不能被访问,就全部私有化。
言而总之:在 scala 当中,只有两种属性,、:公用 public,私有 private。
六、面对对象编程方法-抽象
这部分只需要知道:面向对象抽象是一种研究问题的方法。
