排版乱?请移步原文获得更好的阅读体验

1.单例对象

scala中没有静态类或者静态方法,都是通过object实现的,它表示某个类的单例对象。如object People是class People的单例对象。

2.伴生对象

java中有些类可能会既有静态方法又有实例方法,在scala中静态方法存在于对象中,也就意味中scala中需要有这么一个东西,它既是类,也含有对象。其中的对象就是类的伴生对象,同样的,类就是对象的伴生类。需要注意的是类和它的伴生对象可以相互访问私有属性,它们也必须存在于同一个源文件中。如:

scala    14行

class People{
private val name:String = ""
def run()={
……
}
} object Peole{
private var age:Int
def age(){
this.age += 1
}
}
3.apply方法

调用apply方法其实是调用的类对应的伴生对象的apply方法,apply方法类似于使用构造器,但是在嵌套结构中使用apply方法能省去使用new。Array("marry","alice")其实是调用了Array类对应的伴生对象的apply方法。看一个实例:

scala    12行

class Peopel(salary:Int){
……
} object People{
def apply(salary:Int):People= {
new People(salary)
}
} val p = People(100) //此处调用了伴生对象的apply方法
4.枚举

scala中没有枚举类型,实现方式是通过Enumeration产出枚举。比如:

scala    9行

object ColorEnum extends Enumeration {
val Red,Green,Yellow = Value //调用了Value方法生成三个枚举值
/*相当于
val Red = Value
val Green = Value
val Yellow = Value
*/
}

更多文章请关注微信公众号:bigdataer

5.scala中的对象的更多相关文章

  1. 聊聊 Scala 的伴生对象及其意义

    2019-04-22 关键字:Scala 伴生对象的作用 关于 Scala 伴生对象,比教材更详细的解释. 什么是伴生对象? 教材中关于伴生对象的解释是:实现类似 Java 中那种既有实例成员又有静态 ...

  2. Scala中的类和对象

    类的定义 使用class定义 类的字段 在类中使用var,val定义字段 类的方法 scala中,使用var定义字段默认提供setter和getter方法对应名称为 value_= 和value /* ...

  3. scala中option、None、some对象

    转载:http://www.jianshu.com/p/95896d06a94d 1.option类型避免对象是空值,造成空指针异常. 2.None对象表示null,在没有对象返回时使用,some在有 ...

  4. 第2节 Scala中面向对象编程:1、类的定义;2、类的构造器;3、object和伴生对象;4、apply和main方法

    6.    类.对象.继承.特质 Scala的类与Java.C++的类比起来更简洁,学完之后你会更爱Scala!!! 6.1.   类 6.1.1.    类的定义 package cn.itcast ...

  5. Scala中apply的用法

    Scala中的 apply 方法有着不同的含义, 对于函数来说该方法意味着调用function本身, 以下说明摘自Programming in Scala, 3rd Edition Every fun ...

  6. scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...

  7. Scala中的None,Nothing,Null,Nil

    在scala中这四个类型名称很类似,作用确实完全不同的. None是一个object,是Option的子类型,定义如下 case object None extends Option[Nothing] ...

  8. scala入门教程:scala中的面向对象定义类,构造函数,继承

    我们知道scala中一切皆为对象,函数也是对象,数字也是对象,它是一个比java还要面向对象的语言. 定义scala的简单类 class Point (val x:Int, val y:Int) 上面 ...

  9. Scala 中object和class的区别

    Scala中没有静态类型,但是有有“伴侣对象”,起到类似的作用. Scala中类对象中不可有静态变量和静态方法,但是提供了“伴侣对象”的功能:在和类的同一个文件中定义同名的Object对象:(须在同一 ...

随机推荐

  1. upstream模块实现反向代理的功能

    nginx平台初探(100%) — Nginx开发从入门到精通 http://tengine.taobao.org/book/chapter_02.html#id6 nginx的模块化体系结构¶ ng ...

  2. python基础-第四篇-4.1内置函数

    lambda表达式 lambda表达式是对简单函数的精简化表达 语法结构:函数名 = lambda:运算表达式 def f1(a): a = a + 1 return a ret = f1(1) pr ...

  3. IOUtils方式上传下载文件

    package com.css.hdfs04; import java.io.File; import java.io.FileInputStream; import java.io.FileOutp ...

  4. git 常用文件目录介绍

    生成的RSA公钥与密钥目录: C:\Users\***\.ssh   系统配置文件路径 C:\ProgramData\Git\ C:\Program Files\Git\mingw64\etc   全 ...

  5. git mv与直接mv的区别

    git mv 行为: 1.创建一个和之前文件内容一样的文件,文件名为新的文件名 2.将原来的文件删除 3.将删除的文件添加到暂存区 4.将新建的文件添加到暂存区 $ git mv a a1 $ git ...

  6. 【转载】ARM MMU详解

    一.MMU的产生       许多年以前,当人们还在使用DOS或是更古老的操作系统的时候,计算机的内存还非常小,一般都是以K为单位进行计算,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以 ...

  7. CanvasRenderingContext2D.lineDashOffset

    https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/lineDashOffset CanvasRende ...

  8. Google Code Jam 2014 总结

    第一次参加ACM竞赛,对自己取得的成绩还满意. Round1A: Rank: 2446 Score: 9 (没有进前1000名,只能拼下次了) Round1B: Rank: 944 Score: 42 ...

  9. C语言赋初始值

  10. 自己写个 Drools 文件语法检查工具——栈的应用之编译器检测语法错误

    一.背景 当前自己开发的 Android 项目是一个智能推荐系统,用到 drools 规则引擎,于我来说是一个新知识点,以前都没听说过的东东,不过用起来也不算太难,经过一段时间学习,基本掌握.关于 d ...