开发者学堂课程【Scala 核心编程-基础:Scala 包的特点说明】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/609/detail/8955
Scala 包的特点说明
内容介绍
一、Scala 包的特点概述
二、Scala 包的命名
三、Scala 会自动引入的常用包
四、使用技巧
前面已讲过 Scala 的快速入门,本章来介绍 Scala 包的特点。
一、Scala 包的特点概述
1、基本语法:
package 包名
2、Scala 包的作用(和 Java 一样):
(1)、区分相同名字的类。
(2)、当类很多时,可以很好的管理类。
(3)、控制访问范围。
(4)、对类的功能进行拓展(之后会体现)。
3、Scala 中包名和源码所在的系统文件目录结构可以不一致,但编译后的字节码文件路径和包名会保持一致(这个工作由编译器完成)。
[案例演示]:
scala 包和类源码和文件路径,.class 文件的关系图
Dog, sclaa//
scala
\
com\atguigu\chapter07\ scalapackage
package com. atguigu. Dog
publicDog{
}
//scala 对包的要求。
//1.类的源文件,可以和包对应的文件路径不一致。
//2.当我们编译 Dog 类,后生成对应的. class 文件,编译器会将该. class 文件也放在和包对应的文件路径下:
.class
com. atguigu.chapter07.scalapackage.hello
打开 Scala,找到之前用过的 TestTiger:
package com. atguigu.chapter
0
7.scalapackage
object TestTiger{
def main(args:Array[String]):Unit={
//使用 xh 的 Tiger
val tiger1=new com. atguigu.chapter07.scalapackage . xh.Tiger
//使用 xm 的 Tiger
val tiger2=new com. atguigu.chapter07.scalapackage . xm. Tiger
println(tiger1+““+tiger2)
}
}
class
E
mployee
{
}
写入一个文件 Employee,这时文件的源码文件在 TestTiger,它的路径是 com. atguigu.chapter07.scalapackage,更改为 com. atguigu.chapter07.scalapackage.hello,TestTiger 与 Employee 的路径不一致,此时运行并未报错,是因为编译器已把这个新文件(Employee)放到包对应的文件路径下了,它自动生成文件夹 hello,将文件放进去,并且改变路径后,如改为 com. atguigu.chapter07.scalapackage.hello2,运行后看到文件夹 hello,就变成hello2了,这个功能好处在于灵活性,源文件可以随便写在哪个文件,包可以随意指定,需注意这个工作是编译器来完成的。
二、Scala 包的命名
1、命名规则:
只能包含数字、字母、下划线、小圆点,但不能用数字开头,也不要使用关键字。
案例:
demo. class.exec1//错误,因为 class 为关键字。
demo.12a//错误,因为不能以数字开头,但可以写到中间,如:a1b。
2、命名规范:
一般是小写字母+小圆点一般是:
com.公司名.项目名.业务模块名。
比如:com.atguigu.oa.model com.atguigu.oa.controller
com.sina.edu.user//教育项目
com.sohu.bank.order//银行项目
三、Scala 会自动引入的常用包
在 Java 中 lang 包是不需要引入就可使用的,在 Scala 中 lang 包是自动引入的(本身基于Java开发),除此之外scala 包和 predef包(预定义包)都是自动引入的,但需注意 scala 包可以使用不代表其子包也可以直接使用。在Scala 中新建一个包 packageImport:
package com. atguigu.chapter07. scalapackage
object package Import{
}
在 scala 中 java. lang. 包 scala 包,predef 包可直接使用,import scala.List 就可以直接使用,如图
但 import scala.io.中的包就无法直接使用,需要手动引入一下。
predef 包中包括 set、Map、Function 等等,可直接使用。
四、使用技巧
当平时需要看某个包中文件的详细内容时:
package com. atguigu.chapter
0
7. scalapackage
//在 scala 中 java. lang.包 scala 包,Predef 包可以直接使用
object pack agemport{
def main(args:Array[String]):Unit={
import scala.io.stdIn
}
}
此时要看 io 包的内容,用光标选中 io,然后 ctrl+b 就会显示出 io 包的详细内容,如图:
这时不仅看到 scala 中的 io,同时还能看到 scala 一系列可以直接使用的子包,想看其中某个就可以直接点开看到源代码。