1. 面向对象

2. 包

2.1. 嵌套声明包

Scala有两种包的管理风格,其中一种方式和Java的包管理风格相同,还有一种是嵌套声明

  1. package com{
  2. package atguigu{
  3. package scala{
  4. }
  5. }
  6. }

第二种风格有以下特点:

  1. 一个源文件中可以声明多个package
  2. 子包中的类可以直接访问父包中的内容,而无需导包
  1. package com {
  2. import com.atguigu.Inner //父包访问子包需要导包
  3. object Outer {
  4. val out: String = "out"
  5. def main(args: Array[String]): Unit = {
  6. println(Inner.in)
  7. }
  8. }
  9. package atguigu {
  10. object Inner {
  11. val in: String = "in"
  12. def main(args: Array[String]): Unit = {
  13. println(Outer.out) //子包访问父包无需导包
  14. }
  15. }
  16. }
  17. }

2.2. 包对象

在Scala中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对应包下所有class和object的共享变量,可以被直接访问。

  1. package object com{
  2. val shareValue="share"
  3. def shareMethod()={}
  4. }

嵌套方式管理包,则包对象可与包定义在同一文件中,但是要保证包对象与包声明在同一作用域中。

  1. package com {
  2. object Outer {
  3. val out: String = "out"
  4. def main(args: Array[String]): Unit = {
  5. println(name)
  6. }
  7. }
  8. }
  9. package object com {
  10. val name: String = "com"
  11. }

2.3. 导包

import com.atguigu.Fruit 引入com.atguigu包下Fruit(class和object)
import com.atguigu._ 引入com.atguigu下的所有成员
import com.atguigu.Fruit._ 引入Fruit(object)的所有成员
import com.atguigu.{Fruit,Vegetable} 引入com.atguigu下的Fruit和Vegetable
import com.atguigu.{Fruit=>Shuiguo} 引入com.atguigu包下的Fruit并更名为Shuiguo
import com.atguigu.{Fruit=>Shuiguo,_} 引入com.atguigu包下的所有成员,并将Fruit更名为Shuiguo
import com.atguigu.{Fruit=>,} 引入com.atguigu包下屏蔽Fruit类
new root.java.util.HashMap 引入的Java的绝对路径