一文了解Scala的包管理

scala包的特点

1、scala中的包名和源码所在的文件目录结构可以不一致,但是编译后的字节码文件的路径和包名会保持一致(这个工作由编译器完成)

编译后会生成包对应的目录

2、在scala中 java.lang包scala包predef包自动导入

在 IDEA中查看包下内容,快捷键ctrl + b

3、scala在打包时可以有如下形式

说明
// package top.mgy 表示创建了一个top.mgy的包,在{}中
// 还可以继续写它的子包,scala,包中可以写 类,对象,特质
// 即 scala支持在一个文件中,可以同时创建多个包,以及给各个包创建  类  对象  特质

package top.mgy{  //top.mgy包
    package scala{  //top.mgy.scala包
        class Person{//表示在 top.mgy.scala 包下创建了一个 class Person 
            val name = "Nick"
            
            def play(msg:String):Unit={
                println(this.name+""+message)
            }
        }
        
        object Test{//表示在 top.mgy.scala包下创建了一个 object Test
            def main(args:Array[String]):Unit={
                println("ok")
            }
        }
    }
}

4、作用域原则
可以直接向上访问,即scala中子包可以直接访问父包中的内容大括号体现作用域。

但如果父包中与子包中有相同的类,那么遵循就近原则,则优先使用子包中的同名类,如果非要使用父包中的同名类,则写全路径名称。

5、父包中使用子包的类等则需要导包

6、包发生冲突时使用_root_绝对路径导入包 _root_表示从根路径查找该包

包对象

在java中包内只能创建类 而不能创建方法与变量,scala为了弥补这一不足,引入了包对象的概念,即可以在包中不仅可以创建类 ,特质,对象,还以创建方法,变量。

每个包只能有一个包对象,且包对象必须与包同级,包对象的名称必须与包名一致

//包对象  在该包对象中可以定义变量,方法,并且在同名的
package object scala{
    var aaa = "abc"
}

package scala{
    class Test{
        def test():Unit={
            //可以在对应的包中直接使用包对象中定义的方法和变量
            println(aaa)
        }
    }
}

在底层scala会为包对象创建两个package.classpackage$.class的class文件,使用时,直接调用 package . M O D U L E .MODULE .MODULE.aaa()方法

包访问权限

在scala中新增一个包访问权限

//表示,被 private修饰的 字段,对 visit 包及其子包可见,相当于扩大了该字段的访问权限
private [visit] val name = "jack"

scala的引包说明

1、在scala中 import 可以出现在任何地方

2、import scala.beans._ 表示将 sclal.beans包下所有内容都导入

3、在scala中可以使用选择器进行精准导包

//表示只导入该包下的 HashMap 与  HashSet
import  scala.collection.mutable.{HashMap,HashSet}

4、在scala中可以对导入的类进行重命名

//表示对 java.util下的HashMap这个类重命名为 JavaHashMap
import java.util.{HashMap=>JavaHashMap}

5、在scala中可将引入的包中某些内容屏蔽掉

//表示 将 java.util包中所有类导入,但不隐藏掉HashMap
//第一个 _ 表示隐藏 HashMap  第二个 _ 表示导入所有
import java.util.{HashMap =>_, _}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值