scala学习笔记8 包

本章要点

  • 包也可以像内部类那样嵌套
  • 包路径不是绝对路径
  • 包声明链x.y.z并不自动将中间包x和x.y变成可见
  • 位于文件顶部不带花括号的包声明在整个文件范围内有效
  • 包对象可以持有函数和变量
  • 引入语句可以引入包,类和对象
  • 引入语句可以出现在任何位置
  • 引入语句可以重命名和隐藏特定成员
  • java.lang,scala和predef总是被引入
1、同一个class名称可以出现在不同的package中,访问需要使用完全限定的名称
与对象和类不同,同一个包可以定义在多个文件中
2、作用域规则
scala的包和其它作用域一样的支持嵌套,你可以访问上层作用域中的名称。
utils定义于父包,所有的父包内容都在作用域内,没必要使用com.horstmann.utils.prcentof。但是这种方法存在问题,有可能会出现想引用某个包,
却只找到父包下某个包的情况。(scala包总被引入)
3、串联式包语句
package com.horstmann.impatient {
    package people  {
         class Person
         ...
       }
}
这样的包语句限定了可见的成员。现在com.horstmann.collection包不会再被访问到。
4、文件顶部标记法
package com
package horstmann
package impatient
package people
class Person
...
等同于
package com.horstmann.impatient{
   package people {
     class Person
     }
}
第一个示例中,com,horstmann,impatient三个包的内容是可见的,可以直接被引用。而第二个方法中,只有 com.horstmann.impatient和people可以这么用。
5、包对象
包可以含类,对象和特质,但是不能含有函数或者变量的定义。把工具函数或常量添加到包而不是某个utils对象,这是更合理的做法
包对象正是解决这个问题的。
每个包都有一个包对象,需要在父包中定义,且名称与子包一样。

注意defaultname不需要加限定词,因为它位于同一个包内。在其他地方,这个常量可以用com.horstmann.impatient.people.defaultname访问到
6、包可见性
在java中,没有被声明为public,private或者protected的类成员在包含该类的包中可见。
7、引入
引入语句让你可以使用较短的名称
8、任何地方都可以声明引入
在scala中,import语句可以出现在任何地方,并不局限在文件顶部。import语句的效果一直延伸到包含该语句的块末尾。
9、重命名和隐藏方法
如果想引入包中的几个成员,可以这样使用 选取器(selector)
import java.awt.{Color,Font}
选取器语句还允许你重命名选到的成员:
import java.util.{hashmap=>javahashmap}
选取器HashMap=>_将隐藏某个成员

10、隐式引入
每个scala程序都隐式的以下列代码开始:
import java.lang
import scala
import Predef._
scala引入会覆盖java.lang,predef对象也会被引入

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值