7.1 包
7.1.1 看一个应用场景
现在有两个程序员共同开发一个项目,程序员xiaoming希望定义一个类取名Dog,程序员xiaohong也想定一个类也叫Dog,两个程序员还为此吵了起来,该怎么办?
--->使用包即可解决这个问题
7.1.2 回顾-Java包的三大作用
1) 区分相同名字的类
2) 当类很多时,可以很好的管理类
3) 控制访问范围
7.1.3 回顾-Java打包命令
-打包基本语法
package com.c;
-打包的本质分析
实际上就是创建不同的文件夹来保存类文件
7.1.4 快速入门
使用打包技术来解决上面的问题,不同包下Dog类
public class TestTiger { public static void main(String[] args) { //使用xm的Tiger com.c.scala_exercise.javapackage.xm.Tiger tiger01 = new com.c.scala_exercise.javapackage.xm.Tiger(); //使用xh的Tiger com.c.scala_exercise.javapackage.xh.Tiger tiger02 = new com.c.scala_exercise.javapackage.xh.Tiger(); System.out.println("tiger01=" + tiger01 + "tiger02=" + tiger02); } }
7.1.5 Scala包的基本介绍
和Java一样,Scala中管理项目可以使用包,但Scala中的包的功能更加强大,使用也相对复杂些
7.1.6 Scala包快速入门
使用打包技术来解决上面的问题,不同包下Dog类
object boke_demo01 { def main(args: Array[String]): Unit = { //使用xh的Tiger val tiger1 = new com.c.scala_exercise.scalapackage.xh.Tiger //使用xm的Tiger val tiger2 = new com.c.scala_exercise.scalapackage.xm.Tiger println(tiger1 + " " + tiger2) } }
7.1.7 Scala包的特点概述
-基本语法
package 包名
-Scala包的作用(和Java一样)
1) 区分相同名字的类
2) 当类很多时,可以很好的管理类
3) 控制访问范围
4) 可以对类的功能进行扩展
-Scala中包名和源码所在的系统文件目录结构可以不一致,但是编译后的字节码文件路径和包名会保持一致(这个工作由编译器完成)
object boke_demo01 { def main(args: Array[String]): Unit = { //使用xh的Tiger val tiger1 = new com.c.scala_exercise.scalapackage.xh.Tiger //使用xm的Tiger val tiger2 = new com.c.scala_exercise.scalapackage.xm.Tiger println(tiger1 + " " + tiger2) } } class Employee { }
7.1.8 包的命名
-命名规则:
只能包含数字、字母、下划线、小圆点.,但是不能用梳子开头,也不要使用关键字
demo.class.exercise //错误,因为class是关键字
demo.12a //错误,因为不能以梳子开头
-命名规范:
一般是小写字母+小圆点一般是
com.公司名.项目名.业务模块名 比如:com.baidu.io.model com.baidu.io.controller
7.1.9 Scala包注意事项和使用细节
1) Scala进行package打包时,可以有如下形式
//代码说明 //1. package com.boke{} 表示我们创建了包 com.boke ,在{}中 // 我们可以继续写它的子包 scala //com.boke.scala, 还可以写类,特质trait,还可以写object //2. 即Sacla支持,在一个文件中,可以同时创建多个包,以及给各个包创建类,trait和object package com.boke { //包 com.boke // class User { // 在com.boke包下创建个 User类 // def sayHello(): Unit = { // //想使用 com.boke.scala2包下的 Monster // import com.boke.scala2.Monster // val monster = new Monster() // } // } // // package scala2 { // 创建包 com.boke.scala2 // class User { // 在com.boke.scala2 包下创建个 User类 // } // // class Monster { // // // } // // } // //说明 //1. 在包中直接写方法,或者定义变量,就错误==>使用包对象的技术来解决 //2. package object scala表示创建一个包对象scala, 它是com.boke.scala这个包对应的包对象 //3. 每一个包都可以有一个包对象 //4. 包对象的名字需要和子包一样 //5. 在包对象中可以定义变量,方法 //6. 在包对象中定义的变量和方法,就可以在对应的包中使用 //7. 在底层这个包对象会生成两个类 package.class 和 package$.class package object scala { var name = "king" def sayHiv(): Unit = { println("package object scala sayHI~") } } package scala { //包 com.boke.scala class Person { // 表示在 com.boke.scala下创建类 Person val name = "Nick" def play(message: String): Unit = { println(this.name + " " + message) } } class User { def testUser(): Unit = { println("name = " + name) sayHiv() } } object Test1 { //表示在 com.boke.scala 创建object Test1 def main(args: Array[String]): Unit = {