1. 面向对象
2. 包
2.1. 嵌套声明包
Scala有两种包的管理风格,其中一种方式和Java的包管理风格相同,还有一种是嵌套声明
package com{
package atguigu{
package scala{
}
}
}
第二种风格有以下特点:
- 一个源文件中可以声明多个package
- 子包中的类可以直接访问父包中的内容,而无需导包
package com {
import com.atguigu.Inner //父包访问子包需要导包
object Outer {
val out: String = "out"
def main(args: Array[String]): Unit = {
println(Inner.in)
}
}
package atguigu {
object Inner {
val in: String = "in"
def main(args: Array[String]): Unit = {
println(Outer.out) //子包访问父包无需导包
}
}
}
}
2.2. 包对象
在Scala中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对应包下所有class和object的共享变量,可以被直接访问。
package object com{
val shareValue="share"
def shareMethod()={}
}
嵌套方式管理包,则包对象可与包定义在同一文件中,但是要保证包对象与包声明在同一作用域中。
package com {
object Outer {
val out: String = "out"
def main(args: Array[String]): Unit = {
println(name)
}
}
}
package object com {
val name: String = "com"
}
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的绝对路径 |