/**
* Created by EX-CHENZECHAO001 on 2018-03-30.
*/
class Chapter06 { } // 6 对象
// 用对象作为单例或存放工具的方法
// 类可以拥有一个同名的伴生对象
// 对象可以扩展类或物质
// 对象的apply方法通常用来构造伴生类的新实例
// 如果不想显式定义main方法,可以用扩展App物质的对象
// 可以通过扩展Enumeration对象来实现枚举 // 6.1 单例对象
// 可以用对象来实现:
// 作为存放工具函数或常量的地方
// 高效地共享单个不可变实例
// 需要用单个实例来协调某个服务时
object Accounts {
private var lastNumber = 0 def newUniqueNumber() = {
lastNumber += 1
lastNumber
}
} // 6.2 伴生对象
// 类和它的伴生对象可以相互访问私有特性,它们必须存在于同一个源文件中。
class Account62 (){
// 类的伴生对象可以被访问,但并不在作用域当中,所以需要使用Account62.newUniqueNumber()来访问
val id = Account62.newUniqueNumber()
private var balance = 0.0
def deposit(amount: Double): Unit = {
balance += amount
}
} object Account62{ // Account62类的伴生对象
private var lastNumber = 0
private def newUniqueNumber() = {
lastNumber += 1
lastNumber
}
} // 6.3 扩展类或特质的对象
// 一个object可以扩展类以及一个或多个特质,其结果是一个扩展了指定类以及特质的类的对象,同时拥有在对象定义中给出的所有特性
abstract class UndoableAction(val description: String) {
def undo(): Unit
def redo(): Unit
} object DoNothingAction extends UndoableAction("Do nothing") {
override def undo(): Unit = {}
override def redo(): Unit = {}
}
val actions = Map("open" -> DoNothingAction, "save" -> DoNothingAction) // 6.4 apply方法
Array(100) // 调用Array.apply(100),输出一个单元素array[Int]
new Array(100) // 调用的是构造器this(100),结果是Array[Nothing],包含100个Null元素 class Account private(val id: Int, initialBalance: Double){
private var balance = initialBalance
}
object Account {
def apply(initialBalance: Double) = {
}
} // 6.5 应用程序对象
// main方法
object Hello {
def main(args: Array[String]): Unit = {
println("Hello world")
}
} // 扩展App特质
object HelloNew extends App {
println("Hello world")
// 通过args属性得到参数
if(args.length > 0){
println("Hello " + args(0))
}else{
println("Hello world")
}
}
// 调用应用程序时设置scala.time选项,程序退出时会显示用时。由扩展App特质里的DelaycdInit处理
// /appcom/scala-2.11.8/bin/scala -Dscala.time -classpath . HelloNew cc // 6.6 枚举
///////////////////////// 了解下
// Scala没有枚举类型。标准类库提供Enumeration助手类,可以产出枚举
object TrafficLightColor extends Enumeration {
val Red, Yellow, Green = Value
} object Chapter06 {
def main(args: Array[String]): Unit = { }
}

chapter06的更多相关文章

  1. Chapter06 数组(Array)

    目录 Chapter06 数组 6.1 数组的认识 6.2 数组的使用 使用方式1 - 动态初始化 使用方式2 - 动态初始化 使用方法3 - 静态初始化 6.3 数组使用的注意事项和细节 6.4 数 ...

  2. 《Windows核心编程》读书笔记.Chapter06线程基础

    原文链接在印象笔记(效果也好的多):https://app.yinxiang.com/l/AAQlNLnxTPRMAppVr5W0upchipQDDC_FHlU 概要: 现成也有两个组成部分: 现成的 ...

  3. Django

    一.Django 简介 Django 是一个由 Python 写成的开放源代码的 Web 应用框架.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是 CMS(内容管理系统) ...

  4. 6Hibernate进阶----青软S2SH(笔记)

    关于关联关系的配置,用注解配置如下(这里引用的jar包是javax.persistence) // @ManyToOne(fetch=FetchType.LAZY) @ManyToOne(fetch= ...

  5. 5Hibernate配置及使用方法----青软S2SH(笔记)

    关于hibernate的简单配置,先看结构图,我们需要 1.还要弄一下需要的 jar包. 2.配置两个文件(hibernate配置文件和映射文件),不过映射文件可以用注解替代. 3.写一个pojo类, ...

  6. Django【基础篇】

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  7. python 学习笔记十六 django深入学习一 路由系统,模板,admin,数据库操作

    django 请求流程图 django 路由系统 在django中我们可以通过定义urls,让不同的url路由到不同的处理函数 from . import views urlpatterns = [ ...

  8. django站点管理

    一.启动django站点管理功能 1.关于django.contrib包   包含了django自带的众多附加组件,主要包括:   1)管理工具: django.contrib.admin   2)用 ...

  9. express-6 请求和响应对象(1)

    URL的组成部分 协议: 协议确定如何传输请求.我们主要是处理http和https.其他常见的协议还有file和ftp. 主机名: 主机名标识服务器.运行在本地计算机(localhost)和本地网络的 ...

随机推荐

  1. DC/DC尖峰脉冲吸收电路

    在DC/DC转换器中,脉冲问题直接影响到产品的EMI和电源噪声,需要在某些时候加尖峰脉冲吸收电路. 从上图可以看到,尖峰脉冲吸收电路就是一个RC吸收电路.至于在DC/DC哪里加RC吸收电路,这里有一个 ...

  2. 用Fiddler2来监听HTTP(记:用skydrive sdk访问时,出错后用Fidder抓包分析)

    最近在写一个关于如何上传文件到skydrive的demo, 用REST上传失败. 安装Telerik的Fiddler后, 可以监听http或者https通信, 然后可以在软件中看到返回的json数据或 ...

  3. strcmp strcpy的使用 char类型

    //判断从控制台输入的密码是否正确 BOOL varifyPassWord(char passWord[] , int index) { BOOL result = YES; int count = ...

  4. 给.sh文件添加可执行权限

    有时我们运行.sh文件时会发现没有权限,具体解决方案如下 第一种:bash+执行文件 第二种:chmod命令 如果给所有人添加可执行权限:chmod a+x 文件名:如果给文件所有者添加可执行权限:c ...

  5. EventLoop 与 Channel 的关联

    Netty 中, 每个 Channel 都有且仅有一个 EventLoop 与之关联, 它们的关联过程如下: 从上图中我们可以看到, 当调用了 AbstractChannel#AbstractUnsa ...

  6. 人物-IT-马云:马云

    ylbtech-人物-IT-马云:马云 马云 (阿里巴巴集团创始人) 马云,男,汉族,中共党员,1964年9月10日生于浙江省杭州市,祖籍浙江省嵊州市谷来镇, 阿里巴巴集团主要创始人,现担任阿里巴巴集 ...

  7. Python selenium 三种等待方法

    1. 强制等待 sleep(xx) 是最简单粗暴的一种办法,不管你浏览器是否加载完了,程序都得等待3秒,3秒一到,继续执行下面的代码,作为调试很有用,不建议总用这种等待方式,严重影响程序执行速度. 代 ...

  8. Oracle---SQL子查询---详解

    子查询其实就是指嵌入到其他语句中的select语句,也称其为嵌套查询. 值得注意的在DDL语句中应用子查询的时候子查询可以使用order by 子句. 但是在DML语句中的where子句,set子句中 ...

  9. VMware Workstation虚拟机安装Windows 7系统

    1.进入VMware Workstation虚拟机软件界面,选择新建虚拟机

  10. mybatis 学习一 总体概述

    mybatis使用起来不复杂,大体上来说,就是将db连接信息,所有的sql语句信息,都放到配置文件里面,然后去读配置信息,根据db信息,创建好session工厂,然后拿到sqlsession回话之后, ...