1.单例对象。Scala没有静态方法或字段,可以使用object这个语法结构来达到同样的目的。对象定义了单个实例,包含了你想要的特性。

object Accounts{
private var lastNumber =
def newUniqueNumber()={lastNumber+=;lastNumber}
}

Scala没有静态的概念,如果需要定义静态成员,可以通过object来实现

编译完成后,会生成对应的类,方法都是静态方法,非静态成员对应到单例类中去。

单例类以Util&来作为类名称

scala>object Util{

  ///单例类中

  private var  brand ="benz";

  //静态方法

  def hello() = println("hello world");

}

2.伴生对象

-----------------------------------

  class Car{

    def stop()=println("stop....")

  }

  object Car{

    def run()=println("run.......")

  }

  类名和object名称相同,而且必须在一个scala文件中进行定义

3.扩展类或特质的对象

--------------------------------------------

  (1)trait:特质,等价于java中的接口

  (2)object等价于java 中的静态

  (3)抽象类

    //这个方法实现创建抽象类

abstract class Dog{
def a():Unit
}

//创建对象

object Jing8 extends Dog{
override def a():Unit=(println("helloworld"))
}

4.apply方法

-----------------------------------

  我们通常会定义和使用对象的apply()方法。当遇到以下的形式的时候,apply()方法就会调用。

  Object(参数1,....,参数N)  //通常这样的一个方法返回的是伴生对象。

  举例来说,Array对象定义了apply方法,让我们可以用下面的这种方法来创建数组。

  Array("Mary","had","a","little","lamb")  //Array定义了apply方法

  Array(Array(1,7),Array(2,9))      //对于嵌套语言而言,省去new 关键字会方便很多

注意:Array(100)和new Array(100)很容易混淆。前一个表达式调用的是apply(100),输出一个单元素(整数100)的Array[Int];

    第二个表达式调用的是构造器this(100),结果是Array[Nothing],包含了100个Null元素

  通过如下的方式定义apply()方法

object Util{
def apply(s:String)=print(s)
}
//调用Util.apply()方法
//Util("hello world")<====>Util.apply("hello world")

  

scalac编译scala文件,产生class文件

-----------------------------------------------------------

  cmd>scalac xxx.scala

运行class程序

------------------------------------------------------------------

  cmd>scala Person2.scala  

一步到位

-------------------------------------

  cmd>scala Person.scala

trait(特质)

----------------------------------------

  trait HelloService{

    

}

Scala学习笔记(6)对象的更多相关文章

  1. Scala学习笔记——函数式对象

    用创建一个函数式对象(类Rational)的过程来说明 类Rational是一种表示有理数(Rational number)的类 package com.scala.first /** * Creat ...

  2. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  3. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  4. Python学习笔记_Python对象

    Python学习笔记_Python对象 Python对象 标准类型 其它内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比較 对象身份比較 布尔类型 ...

  5. scala 学习笔记十 一 伴生对象

    1.介绍 a.所谓伴生对象就是和某个class同名的object, 并且object 必须和class在同一个scala源文件中. b.在scala中,没有像java中的静态类,静态方法和静态成员等, ...

  6. 【大数据】Scala学习笔记

    第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...

  7. scala学习-类与对象

    类 / 对象 [<快学Scala>笔记] 一.类 1.Scala中的类是公有可见性的,且多个类可以包含在同一个源文件中: class Counter{ private var value ...

  8. Scala学习笔记之:tuple、array、Map

    [TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...

  9. JavaScript:学习笔记(8)——对象扩展运算符

    JavaScript:学习笔记(8)——扩展运算符 对象的扩展运算符 扩展运算符是三个点(...).用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中. 如上图所示,新建了一个对象a,然后通过扩 ...

随机推荐

  1. #418 Div2 Problem B An express train to reveries (构造 || 全排列序列特性)

    题目链接:http://codeforces.com/contest/814/problem/B 题意 : 有一个给出两个含有 n 个数的序列 a 和 b, 这两个序列和(1~n)的其中一个全排列序列 ...

  2. 文件操作:rewind()

    函数名: rewind() 功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头   注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动 ...

  3. Rust:剑指C++

    Rust:极富活力和前途的编程语言,剑指C++ 今天开始学习Rust,马上要回去休息了,只贴上一段实例代码,在后续的学习中,会对这种语言进行一个详尽的介绍(学习中....). extern crate ...

  4. 2019.9.23JAVA课堂测试

    1.题目 使用递归方式判断某个字串是否是回文( palindrome ) “回文”是指正着读.反着读都一样的句子.比如“我是谁是我”使用递归算法检测回文的算法描述如下:A single or zero ...

  5. Android中实现双击(多击)事件

    要实现双击,你需要保存第一次点击时的时间,需要使用到变量,之后便是与第二次点击时的时间比较,看时间间隔是否在你设定的时间内(比如500ms). ? 1 2 3 4 5 6 7 8 9 10 11 12 ...

  6. 关于项目中的一些经验:封装activity、service的基类,封装数据对象

    经验一,将几个页面公用的数据,和方法进行封装,形成一个baseActivity的类: package com.ctbri.weather.control; import java.util.Array ...

  7. SQL Server 2016升级迁移过程中性能问题诊断案例

    日常运行的批量更新作业,平日是5分钟之内结束,今天出现超过30分钟没结束的情况,实际运行3个小时以上,应用程序超时报错. 数据库版本:SQL Server 2016企业版 问题SQL: declare ...

  8. What is 'typeof define === 'function' && define['amd']' used for?

    What is 'typeof define === 'function' && define['amd']' used for? This code checks for the p ...

  9. shell脚本之结构化命令if...then...fi

    if的用法日常主要用于数值或者字符串的比较来实现结构化的,模拟人脑,就是如果遇到什么事情,我们应该做什么 语法格式分为 1. if command;then command;fi    (如果if满足 ...

  10. JRE、JDK、JVM 及 JIT 之间有什么不同

    java虚拟机(JVM)     使用java编程语言的主要优势就是平台的独立性.你曾经想知道过java怎么实现平台的独立性吗?对,就是虚拟机,它抽象化了硬件设备,开发者和他们的程序的得以操作系统.虚 ...