scala 开发入门(7)-- 包

包的定义

//将代码组织到 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 => _,_}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值