`
tongqingqiu
  • 浏览: 24099 次
  • 性别: Icon_minigender_1
  • 来自: 亚特兰大
社区版块
存档分类
最新评论

Scala基础(6)- 类和对象

阅读更多

定义

类的定义例子如下。

class Point(xc: Int, yc: Int) {
  var x: Int = xc
  var y: Int = yc
  def move(dx: Int, dy: Int) {
    x = x + dx
    y = y + dy
  }
  override def toString(): String = "(" + x + ", " + y + ")";
}

move方法有两个参数,没有返回值(这里Scala缺省了Unit,类似于Java中void的返回)。toString是一个重载的方法,必须使用override

类的定义中可以有多个构造参数。这比C++或者Java的构造函数更简洁。

使用

通过类可以创建对象的实例,调用类方法。

val pt = new Point(1, 2)
println(pt)
pt.move(10, 10)
println(pt)

函数和方法在很大程度上是可以互换的。在下面的例子中,调用minc和finc的方式完全一样,效果也基本相同。其细微的差别你现在也不需要关心。

class C {
       var acc = 0
       def minc = { acc += 1 }
       val finc = { () => acc += 1 }
}

单例(singleton)对象

Scala中没有static成员。取而代之的是单例(singleton)对象。单例对象的定义和类定义相同,除了使用关键字object。我们常常使用相同的名字定义一个类和一个单例对象。这样的对象是该类的伴生对象,可以访问该类的成员和方法。通过这样的方法(和apply结合使用),我们可以实现类型的factory,从而去除了外部new的使用。

class MyString(val jString:String) {
  private var extraData = ""
  override def toString = jString+extraData
}
object MyString {
  def apply(base:String, extras:String) = {
    val s = new MyString(base)
    s.extraData = extras
    s
  }
  def apply(base:String) = new MyString(base)
}

println(MyString("hello"," world"))
println(MyString("hello"))

为了运行一个Scala程序,必须定义这样一个单例对象作为main的入口。

object HelloWorldApp {
    def main(args: Array[String]) {
      Console.println("Hello World!")
} }

Scala也提供了App让你继承,以达到相同的效果。

object HelloWorldApp extends App {
  Console.println("Hello World!")
}

Scala中继承,抽象类,重载等概念和其他面向对象的语言基本相关,除了特质(trait)。我们会把特质单独拿出来讲。

0
0
分享到:
评论

相关推荐

    大数据课程-Scala编程基础-3.Scala面对对象的特性_lk_edit.ppt

    大数据课程——Scala编程基础,教师版,提供教学大纲、教案、教学设计、实训文档等,课程内容包含教学准备环境、软件安装、作业、教学文档、演示视频,花费巨额时间亲自制作,下载后可私信提供上述所有教学资料,可...

    快学Scala课后习题答案

    快学Scala课后习题答案,包含各个章节答案word版和pdf版

    Scala编程详解 第12讲-Scala编程详解:面向对象编程之类 共12页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    Scala编程详解 第13讲-Scala编程详解:面向对象编程之对象 共9页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    Scala编程详解 第14讲-Scala编程详解:面向对象编程之继承 共13页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    Scala 基础.pdf

    scala基础文档,专门为计算而生的语言,Scala将(Java后者C++)面向对象设计和 函数式编程 结合在一起的简洁的高级编程语言。而 函数式编程强调的是通过传递算子(代码|函数)实现大规模数据集的本地计算。Scala虽然是...

    Scala编程详解 第21讲-Scala编程详解:Actor入门 共8页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    Scala编程详解 第19讲-Scala编程详解:类型参数 共13页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    Scala编程详解 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    Scala编程详解 第4讲-Scala编程详解:条件控制与循环 共7页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    Scala基础与实践

    Scala是一门多范式的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性。

    tutorial-sparkpi-scala-akka

    创建必要的基础结构对象 oc create -f https://radanalytics.io/resources.yaml 启动scala-spark-webapp oc new-app --template oshinko-scala-spark-build-dc \ -p APPLICATION_NAME=scala-spark-webapp \ -p ...

    Scala编程详解 第9讲-Scala编程详解:数组操作之Array、ArrayBuffer以及遍历数组 共7页.pptx

    第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页 第7讲-Scala编程详解:函数入门之变长参数 共4页 第8讲-Scala编程详解:函数入门之过程、lazy值和异常 共5页 第9讲-Scala编程详解:数组操作之Array、...

    spark源码之scala基础语法demo

    scala是一种基于JVM的面向对象的函数编程,scala编程相对于java而言代码整洁、开发效率更高。 其中scala优点主要有: 1:面向对象,可以定义class,通过new调用实例对象使用。 2:兼容java,在scala中可以直接调用...

    SCALA从入门到精通个人笔记含代码

    类和对象 包 包对象 面向对象编程中级 封装 继承 多态 面向对象编程高级 伴生对象 特质 嵌套类 类型约束 Scala数据结构之集合 函数式编程高级 隐式转换和隐式值 偏函数 高阶函数 闭包closure 柯里化...

    scala.rar基础知识,笔记很好的详细

    如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为: 不太久之前编程语言还可以毫无疑意地归类成“命令式”或者...

    Scala-Programming-Projects:Packt发布的Scala编程项目

    Scala是一种类型安全的JVM语言,它结合了面向对象和功能编程(OOP和FP)方面。 本书通过指导您完成Scala编程的各个方面,帮助您弥合学习与实施之间的鸿沟,从而使您从软件开发的基础入手。 您将通过各种应用程序...

    大数据技术之Spark编程基础-第2章-Scala语言基础(共155页).pptx

    【课程列表】 2.1 Scala语言概述 2.2 Scala基础 2.3 面向对象编程基础 2.4 函数式编程基础

    Scala编程实战.zip

    此文档是讲解实战Scala,希望对喜欢大数据的同学有所帮助!!! 学习Scala语言,不仅仅意味着熟悉新的API,更重要的是...对于Scala新手来说这是一本不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。

Global site tag (gtag.js) - Google Analytics