Scala实战详解之第10讲 Scala单例对象、伴生对象实战详解

本文介绍Scala中的单例对象及其用法,并通过实例详细解释了伴生对象的概念及如何利用伴生对象进行类的封装。
package com.dt.scalaInAction.demo_010

/**
 * 
 */
class University {
    val id = University.newStudentNo
    private var number = 0
    def aClass(number : Int) = {this.number += number}
}

/**
 * object可以作为一些静态方法区 静态变量区
 */
object University {
    private var studentNo = 0
    def newStudentNo = {
        studentNo += 1
        studentNo      //Scala中方法的最后一行就是方法的返回内容
    }
    private def call = {
        studentNo += 1
        studentNo     
    }
}
/**
 * Scala单例对象
 *      伴生对象 实战详解
 * (a)    
 * Scala没有像在Java中拥有静态类,静态成员,静态方法
 * Scala中提供了object对象类似于Java中的静态类  在Scala的object类中定义的所有成员和方法都是静态的
 * 
 * (b) 
 * 与Java不同的是 类中的静态成员 和方法 会在类加载时就会执行,即使不去调用
 * 而Scala中的object只有在第一次使用的时候才会执行  并不是加载的时候就去执行的
 * 
 * (c) 伴生类/伴生对象
 * class A   object A   这两个类名一样 
 * 则class A 为 object A的伴生类
 *   object A 为 class A的伴生对象
 * 而且class A 可以任意访问它的伴生对象中的所有成员 包括private级别的def
 * 注意:由于伴生对象的定义不在伴生类中 所以访问伴生对象中的成员 仍然是A.xxx的方式
 * 一般而言 可以吧伴生对象对象作为伴生类的封装区域 
 * 
 */
object ObjectOps {
    def main(args: Array[String]): Unit = {
      
        println("studentNo="+University.newStudentNo)  //1
        println("studentNo="+University.newStudentNo)  //2
        
        
        val arr = Array(1, 2, 3, 4)  //这样的定义数组其实底层就是采用类的伴生对象来构建的
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值