[scala] scala 对象(六)
1、单例对象和伴生对象
2、定义单利对象的apply方法可不通过构造器直接创建对象
3、extends 来扩展单例对象
4、枚举实现
/**
* 单例对象
*
* @author xuejz
* @date 2017-04-13 16:41
* @since 1.8
*/ //单例对象
class Parent extends Action(12){
//调用伴生对象的无参方法
val pson =if(Parent.son==0) 1 else Parent.newSon val son=0 }
//伴生对象
object Parent{
private var son:Int=0
private def newSon():Int={son+=1;son} //定义apply方法
def apply(id:Int)={
new Parent
}
}
/**
* @author xuejz
* @date 2017-04-13 16:55
* @since 1.8
*/
class Action(val defineId:Int){ private val init:Int=defineId
var createTime = new Date() def id=init
def id_=(newId:Int):Unit=this.id=id
}
枚举
/**
* 枚举类
* 继承Enumeration
* @author xwolf
* @date 2017-04-19 23:17
* @since 1.8
*/
object Colors extends Enumeration{
val red,yellow,green,black=Value
val yarn=Value("yarn") }
测试:
object ParentTest {
def main(args: Array[String]): Unit = {
val parent = new Parent
println(parent.pson)
println(parent.id)
println(parent.createTime)
//定义apply 方法
val p =Parent(43)
println(p.id)
//枚举调用
println(Colors.red)
println(Colors.withName("black"))
println(Colors.yarn)
} }
[scala] scala 对象(六)的更多相关文章
- 6、scala面向对象-对象
一.对象 1.object object,相当于class的单个实例,通常在里面放一些静态的field或者method,第一次调用object的方法时,就会执行object的constructor, ...
- Programming In Scala笔记-第六章、函数式对象
这一章主要是以定义和完善一个有理数类Rational为线索,分析和介绍有关类定义,构造函数,方法重写,变量定义和私有化,以及对操作符的定义等. 一.Rational类定义和构造函数 1.定义一个空类 ...
- scala编程(六)——函数式对象
Rational 的式样书 分数:rational number 是一种可以表达为比率 d n 的数字,这里的 n 和 d 是数字,其中 d 不能为零.n 被称作是分子:numerator,d 被称作 ...
- 《快学Scala》第六章 对象 第七章 包和引入
- Scala 系列(六)—— 常用集合类型之 List & Set
一.List字面量 List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表. scal ...
- Scala学习十六——XML处理
一.本章要点 XML字面量<like>this</like>的类型为NodeSeq 可以在XML字面量中内嵌Scala代码 Node的child属性产出后代节点 Node的at ...
- scala伴生对象
package com.test.scala.test /** * 伴生对象指的是在类中建立一个object */ class AssociatedObject { private var count ...
- Scala Singleton对象
Scala Object: scala没有静态的修饰符,例如Java中的static.但是Scala提供了Object类型,object下的成员都是静态的,比较像Java的静态类.不同在于Scala的 ...
- Scala函数式对象-有理数
有理数类的表示 实现规范:支持有理数的加减乘除,并支持有理数的规范表示 1.定义Rational 首先,考虑用户如何使用这个类,我们已经决定使用“Immutable”方式来使用Rational对象,我 ...
随机推荐
- Linxu Yum方式安装Mysql
1.下载yum源 进入http://dev.mysql.com/downloads/repo/,下载RedHat Enterprise Linux 6 / Oracle Linux 6版.文件名称:m ...
- MQ调研梳理
1.架构 主项 子项 rabbitMQ rocketMQ Kafka Hippo Tube 高可用 1:镜像队列. 2:集群.master/slave机制. HA 同步双写和异步复制均支持 (同maf ...
- Swift的函数与函数指针、闭包Closure等相关内容介绍
<span style="font-size:24px;">//函数 //demo1 无參数类型 func testConcat(){ println("測试 ...
- JVM调优总结(一):基本概念
一.数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型. 基本类型的变量保存原始值,即:他代表的值就是数值本身: 而引用类型的变量保存引用值.“引用值”代表了某个对象的引用,而不是对 ...
- 快速掌握Vue.js使用【转】
Vue.js是当下很火的一个JavaScript MVVM库,它是以数据驱动和组件化的思想构建的.相比于Angular.js,Vue.js提供了更加简洁.更易于理解的API,使得我们能够快速地上手并使 ...
- Android studio 3+版本apk安装失败问题
studio2.3升级到3.1之后将apk发给别人下载到手机上安装,华为提示安装包无效或与操作系统不兼容,魅族提示apk仅为测试版,要求下载正式版安装. 在网上找了一下,发现是studio3.0之后的 ...
- 【转】腾讯移动品质中心TMQ [腾讯 TMQ] 测试管理平台大比拼
简介 测试管理平台是贯穿测试整个生命周期的工具集合,它主要解决的是测试过程中团队协作的问题,比如缺陷管理.用例管理.测试任务管理等. 目前市面上比较流行的测试管理工具有QC. Mantis. BugZ ...
- Fedora归档管理器支持Rar、7Z
最新文章:Virson's Blog 方法: 在Fedora下如何安装 RAR 压缩/解压缩程序 (RAR)? RAR格式压缩包解压 命令:yum install unrar 7z格式压缩包解压 yu ...
- Assets/FollowDestination.cs(6,13): error CS0246: The type or namespace name `NavMeshAgent' could not be found. Are you missing `UnityEngine.AI' using directive?的解决方案
问题的出现与描述 在Unity中创建一个NPC,使它一直跟踪一个目标Destination,C#脚本代码如下,错误信息描述如下 using System.Collections; using Syst ...
- Java如何监视线程的状态?
在Java编程中,如何监视线程的状态? 以下示例演示如何通过扩展Thread类并使用currentThread.getName()方法来监视线程的状态. package com.yiibai; cla ...