164 Scala 对象

简介: 164 Scala 对象
1.单例对象

在Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的

  1. 存放工具方法和常量
  2. 高效共享单个不可变的实例
  3. 单例模式
package cn.itcast.scala
import scala.collection.mutable.ArrayBuffer
object SingletonDemo {
  def main(args: Array[String]) {
    //单例对象,不需要new,用【类名.方法】调用对象中的方法
    val session = SessionFactory.getSession()
    println(session)
  }
}
object SessionFactory{
  //该部分相当于java中的静态块
  var counts = 5
  val sessions = new ArrayBuffer[Session]()
  while(counts > 0){
    sessions += new Session
    counts -= 1
  }
  //在object中的方法相当于java中的静态方法
  def getSession(): Session ={
    sessions.remove(0)
  }
}
class Session{
}
2.伴生对象

在Scala的类中,与类名相同的对象叫做伴生对象,类和伴生对象之间可以相互访问私有的方法和属性

package cn.itcast.scala
class Dog {
  val id = 1
  private var name = "itcast"
  def printName(): Unit ={
    //在Dog类中可以访问伴生对象Dog的私有属性
    println(Dog.CONSTANT + name )
  }
}
/**
  * 伴生对象
  */
object Dog {
  //伴生对象中的私有属性
  private val CONSTANT = "汪汪汪 : "
  def main(args: Array[String]) {
    val p = new Dog
    //访问私有的字段name
    p.name = "123"
    p.printName()
  }
}
3.apply方法

通常我们会在类的伴生对象中定义apply方法,当遇到类名(参数1,…参数n)时apply方法会被调用

package cn.itcast.scala
object ApplyDemo {
  def main(args: Array[String]) {
    //调用了Array伴生对象的apply方法
    //def apply(x: Int, xs: Int*): Array[Int]
    //arr1中只有一个元素5
    val arr1 = Array(5)
    println(arr1.toBuffer)
    //new了一个长度为5的array,数组里面包含5个null
    var arr2 = new Array(5)
  }
}
4.应用程序对象

Scala程序都必须从一个对象的main方法开始,可以通过扩展App特质,不写main方法。

package cn.itcast.scala
object AppObjectDemo extends App{
  //不用写main方法
  println("I love you Scala")
}


目录
相关文章
Scala快速入门-6-单例对象及伴生对象
• 用对象作为单例或存放工具方法,Scala没有静态方法或字段 • 类可以有一个同名的伴生对象 • 对象的apply方法通常用来构造伴生类的新实例 • Scala的main函数定义 单例对象
|
存储 Java Scala
scala中的list怎么存储对象
scala中的list是一个不可变的列表,有时候我们想直接添加对象不太方便,这个时候可以先转成java的List添加完再转回去. LIst支持在头部快速添加和移除条目,但是不提供快速按下标访问的功能,这个功能需要线性遍历列。 快速的头部添加和移除意味着模式匹配很顺畅
|
搜索推荐 关系型数据库 Shell
Scala入门系列终章:类与对象
截至本篇,Scala入门系列即将告一段落,先后用7篇文章将Scala语言的四梁八柱进行了简要介绍,虽然阅读量相较于其他文章更为惨淡,但相信对于有一定编程语言基础又想快速入门Scala的读者来说还是会有一定收获和借鉴的。 本文作为该系列的最后一篇,将重点介绍Scala中类和对象的概念,毕竟Scala也是一门面向对象的编程语言。 坦白讲,个人在学习Scala中这一部分内容时其实也是有些凌乱的,一直觉得未能理解到Scala中类和对象的精髓,所以当下完成此文也仅仅是出于系列内容的完整性,后续也将适时推出其他分享。
142 0
Scala入门系列终章:类与对象
|
开发框架 Java 大数据
大数据进阶之路——Scala 函数和对象
大数据进阶之路——Scala 函数和对象
147 0
大数据进阶之路——Scala 函数和对象
|
Java 程序员 Scala
Scala基础教程 - 单例对象、伴生类是什么?
Scala基础教程 - 单例对象、伴生类是什么?
187 0
|
Scala
Scala语言入门二(对象)
讲述Scala中的面向对象相关知识点
963 0
|
大数据 Java Scala
大数据Scala系列之对象
大数据学习Scala系列之对象 单例对象在Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的 1.scala类似于Java中的工具类,可以用来存放工具函数和常量 2.高效共享单个不可变的实例 3.单例模式 单例对象虽然类似于Java中的工具类,但它不是,还是一个对象,可以把单例对象名看做一个贴在对象上的标签。
867 0
|
Java Scala
Scala系列之对象
Scala系列之对象 单例对象在Scala中没有静态方法和静态字段,但是可以使用object这个语法结构来达到同样的目的 1.scala类似于Java中的工具类,可以用来存放工具函数和常量2.高效共享单个不可变的实例3.单例模式单例对象虽然类似于Java中的工具类,但它不是,还是一个对象,可以把单例对象名看做一个贴在对象上的标签。
2311 0