Scala 面向对象
Scala 的面向对象思想和 Java 的面向对象思想和概念是一致的。
Scala 中语法和 Java 不同,补充了更多的功能。
1 Scala 包
1)基本语法
package 包名
2)Scala 包的三大作用(和 Java 一样)
(1)区分相同名字的类
(2)当类很多时,可以很好的管理类
(3)控制访问范围
1.1 包的命名
1)命名规则
只能包含数字、字母、下划线、小圆点.,但不能用数字开头,也不要使用关键字。
2)案例实操
demo.class.exec1 //错误,因为 class 关键字
demo.12a //错误,数字开头
3)命名规范
一般是小写字母+小圆点
com.公司名.项目名.业务模块名
4)案例实操
com.sohu.bank.order
1.2 包说明(包语句)
1)说明
Scala 有两种包的管理风格,一种方式和 Java 的包管理风格相同,每个源文件一个包(包名和源文件所在路径不要求必须一致),包名用“.”进行分隔以表示包的层级关系,如com.xiaoqiu.scala。
另一种风格,通过嵌套的风格表示层级关系,如下
package com{
package xiaoqiu{
package scala{
}
}
}
第二种风格有以下特点:
(1)一个源文件中可以声明多个 package
(2)子包中的类可以直接访问父包中的内容,而无需导包
1.3 包对象
在 Scala 中可以为每个包定义一个同名的包对象,定义在包对象中的成员,作为其对应包下所有 class 和 object 的共享变量,可以被直接访问。
1)定义
package object com{
val shareValue="share"
def shareMethod()={}
}
1)说明
(1)若使用 Java 的包管理风格,则包对象一般定义在其对应包下的 package.scala文件中,包对象名与包名保持一致。
(2)如采用嵌套方式管理包,则包对象可与包定义在同一文件中,但是要保证包对象与包声明在同一作用域中。
package com {
object Outer {
val out: String = "out"
def main(args: Array[String]): Unit = {
println(name)
}
}
}
package object com {
val name: String = "com"
}
1.4 导包说明
1)和 Java 一样,可以在顶部使用 import 导入,在这个文件中的所有类都可以使用。
2)局部导入:什么时候使用,什么时候导入。在其作用范围内都可以使用
3)通配符导入:import java.util._
4)给类起名:import java.util.{ArrayList=>JL}
5)导入相同包的多个类:import java.util.{HashSet, ArrayList}
6)屏蔽类:import java.util.{ArrayList =>_,_}
7)导入包的绝对路径:new _root_.java.util.HashMap
package java {
package util {
class HashMap {
}
}
}
说明
import com.xiaoqiu.Fruit 引入 com.xiaoqiu 包下 Fruit(class 和 object)
import com.xiaoqiu._ 引入 com.xiaoqiu 下的所有成员
import com.xiaoqiu.Fruit._ 引入 Fruit(object)的所有成员
import com.xiaoqiu.{Fruit,Vegetable} 引入 com.xiaoqiu 下的 Fruit 和 Vegetable
import com.xiaoqiu.{Fruit=>Shuiguo} 引入 com.xiaoqiu 包下的 Fruit 并更名为 Shuiguo
import com.xiaoqiu.{Fruit=>Shuiguo,_} 引入 com.xiaoqiu 包下的所有成员,并将 Fruit 更名为 Shuiguo
import com.xiaoqiu.{Fruit=>_,_} 引入 com.xiaoqiu 包下屏蔽 Fruit 类
new root.java.util.HashMap 引入的 Java 的绝对路径
2)注意
Scala 中的三个默认导入分别是
import java.lang._
import scala._
import scala.Predef._