美文网首页Scala
4.Scala 类和对象 (一)

4.Scala 类和对象 (一)

作者: MaLiang | 来源:发表于2016-05-14 11:21 被阅读37次

有了前面的Scala基础,从本篇开始由浅到易逐步介绍Scala编程的各个方面,博客不可能做到面面俱到,还是希望你有些编程基础,尤其是有些面向对象的编程基础,如Java,C++,C#等更好。出支持函数化编程外,Scala也是一个纯面向对象的编程语言。本篇和下篇介绍Scala的类和对象.

首先介绍Scala的类定义,我们以一个简单的例子开始,创建一个计算整数累计校验和的类ChecksumAccumulator

1

class ChecksumAccumulator{

2

private var sum=0

3

def add(b:Byte) :Unit = sum +=b

4

def checksum() : Int = ~ (sum & 0xFF) +1

5

}

可以看到Scala类定义和Java非常类似,也是以class 开始,和Java不同的,Scala的缺省修饰符为public ,也就是如果不带有访问范围的修饰符public,protected,private,Scala缺省定义为 public。类的方法以def定义开始,要注意的Scala的方法的参数都是val类型,而不是var类型,因此在函数体内不可以修改参数的值,比如如果你修改add方法如下:

1

def add(b:Byte) :Unit ={

2

b=1

3

sum+=b

4

}

此时编译器会报错:

/root/scala/demo.scala:5: error: reassignment to val

b=1

^

one error found

类的方法分两种,一种是有返回值的,一种是不含返回值的,没有返回值的主要是利用代码的“副作用”,比如修改类的成员变量的值或者读写文件等。Scala内部其实将这种函数的返回值定为Unit(类同Java的void类型),对于这种类型的方法,可以省略掉“=”好,因此如果你希望函数返回某个值,但忘了方法定义中的“=”,Scala会忽略方法的返回值,而返回Unit。

再强调一下,Scala代码无需使用“;”结尾,也不需要使用return返回值,函数的最后一行的值就作为函数的返回值。

但如果你需要在一行中书写多个语句,此时需要使用“;”隔开,不过不建议这么做。你也可以把一条语句分成几行书写,Scala编译器大部分情况下会推算出语句的结尾,不过这样也不是一个好的编码习惯。

相关文章

  • 4.Scala 类和对象 (一)

    有了前面的Scala基础,从本篇开始由浅到易逐步介绍Scala编程的各个方面,博客不可能做到面面俱到,还是希望你有...

  • 4.scala中的类

    版权申明:转载请注明出处。文章来源:http://bigdataer.net/?p=269 排版乱?请移步原文获得...

  • 类和对象(一)

    定义:类:就是拥有相同和功能的对象的集合(类是抽象的)对象:类的实例(对象是具体的) 一、编程思想 1.面向对象编...

  • 一、类和对象

    *************************C++ 第一天 类和对象********************...

  • 对象、类对象和元类对象

    http://www.tuicool.com/articles/mmyuUr http://blog.csdn.n...

  • python 类和对象

    类和对象 目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的...

  • 类,类对象和实例对象

    Python 的类定义写完之后就成了一个类对象,而引用这个类对象的就是实例对象。 类中定义的属性和方法都是静态属性...

  • 面相对象-02类和对象

    类和对象 目标 ●类和对象的概念●类和对象的关系●类的设计 01.类和对象的概念 类和对象是面向对象编程的两个核心...

  • python语法入门五

    类和对象 类和对象 基础 继承:python为多继承 类、类对象和实例对象 当实例对象声明后,再删除类对象,那么该...

  • 13.Python类和对象

    目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的 两个 核...

网友评论

    本文标题:4.Scala 类和对象 (一)

    本文链接:https://www.haomeiwen.com/subject/oibmrttx.html