您当前的位置: 首页 >  scala

宝哥大数据

暂无认证

  • 3浏览

    0关注

    1029博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Scala基础知识之对象

宝哥大数据 发布时间:2017-04-21 13:31:35 ,浏览量:3

一、对象 1.1、伴生对象

相同的名字,在同一个源文件中。   这个就是伴生机制,所谓伴生,就是在语言层面上,把static 成员和非static成员用不同的表达方式,class和object,但双方具有相同的package和name,但是最终编译器会把他们编译到一起,这是纯粹从语法层面上的约定。通过javap可以反编译看到。

package com.chb.test

class Test1 {
  var field = "field"
  def doSomething = println("do something");
}
object Test1 {
  val a = "a string"
  def printString  = println(a);
}

这里写图片描述

1.2、 apply() 1.3、单例对象

1、Scala没有静态方法或静态字段,你可以用object这个语法结构来达到相同目的。 2、Object可以扩展其他类或特质,不能提供构造器参数,放在object中的方法都是静态方法。 3、何时使用object :

  • 1、作为存放工具函数或常量的地方。
  • 2、高效的共享单个不可变实例。
  • 3、需要单个实例来协调某个服务时(单例模式)
另外一个小魔法,就是单例,单例本质上是通过伴生机制完成的,直接由编译器生成一个class对象,这样至少在底层能够统一 如何创建一个单例对象, 通过伴生对象机apply()

1、伴生类私有化 2、在伴生对象中创建一个实例 3、在apply()中返回伴生类的实例

package com.chb.scala

import scala.collection.immutable.Map

/**
 * 伴生类:
 */
class TestClass private {//1、伴生类私有化
	private val tc1 = 1
	def add() = {
		tc1 + TestClass.tc2 //调用伴生对象的私有属性TestClass.xx
	}

	def test {
		println("test class println")
	}
}

/**
 * 伴生对象:
 * 
 */
object TestClass {
	val  tcInstance = new TestClass()    //2、在伴生对象中创建一个实例
	private val tc2 = tcInstance.tc1+2   //调用 伴生类 的私有属性,通过伴生类的实例来调用
	def apply() = { //3、在apply()中返回伴生类的实例
	  tcInstance
	}
}

 
object testMain{
	def main(args: Array[String]):Unit = {
			for(i             
关注
打赏
1587549273
查看更多评论
0.0410s