您的位置:首页 > 其它

scala 开发入门(7)-- 包

2018-03-13 11:06 477 查看

包的定义

//将代码组织到 cn.scala.package 包中
package cn.scala.package
abstract class Animal{
//抽象字段
var height:Int
//抽象方法
def eat:Unit
}
class Person (var height:Int) extends Animal{
override def eat() = println("eat by mouth")
}
object Person extends App{
new Person(170).eat()
}

//下面的代码定义了一个 cn.scala.package,在该包中定义一个类 Teacher
//在程序的任何地方都可以通过 cn.scala.package.Teacher 来使用 Teacher 这个类
package cn{
package scala{
package package{
class Teacher{}
}
}
}

包的使用和作用域

package cn{
package scala{
//在包 cn.scala 下创建一个 Utils 单例
object Utils{
def toString(x:String) = println(x)
//外层包无法直接访问内层包,下面这一行代码编译通不过
//def getTeacher():Teacher = new Teacher("John")
//如果一定要使用的话,可以引入
import cn.scala.chapter._
def getTeacher():Teacher = new Teacher("John")
}
//定义包 chapter
package chapter{
class Teacher(var name:String){
//演示包的访问规则
//内层包可以访问外层包中定义的类或对象,无需引入
def printName()={Utils.toString(name)}
}
}
}
}

包对象

Scala语言是纯面向对象的语言,语言中的一切皆对象,包也是如此。既然是对象,就有它的属性和方法,通过 package 关键字声明的对象被称之为包对象。包对象主要用于对常量和工具函数的封装,使用时直接通过包名引用。//下面的代码给出了包对象的定义
package cn.scala.chapter

//利用 package 关键字定义单例对象
package object Math{
val PI = 3.1415926
val THETA = 2.0
val SIGMA = 1.9
}

class Computation{
def computerArea(r:Double) = Math.PI*r*r
}
//隐式引入,引入对象中所有类和方法
import java.lang._
//引入重命名
import java.util.{HashMap => JavaHashMap}
//类隐藏,不引入HashMap
import java.util.{HashMap => _,_}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  scala package