2019独角兽企业重金招聘Python工程师标准>>>

Scala类

1

2

3

4

5

6

7

8

9

10

11

12

13

class Counter {

private var value = 0 // 必须初始化字段

def increment() { value += 1 } // 方法默认公有

def current = value // 调用必须是myCounter.current这种风格

}

class Student{

var age=20     //底层编译器会自动为私有的age添加get和set的公有方法,可以理解为伪public类型

private[this] var gender="male" //private[this] 只有该类的this可以使用

private var name="clow" //声明了private,底层编译器会自动为私有的name添加get和set的私有方法

//但是可以自己定义属性方法

def getName=this.name

def setName(value:String){this.name=value}

}

Scala类和java类中有些区别,在Scala声明private变量会Scala编译器会自动生成get,set,在Scala中变量是需要初始化的,如果不声明private默认是public的

object

Scala中没有静态修饰符,static,在object下的成员全部都是静态的,如果在类中声明了与该类相同的名字的object则该object是该类的“半生对象”,可以理解把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化的操作。

trait

在java中可以通过interface实现多重继承,在Scala中可以通过特征(trait)实现多重继承,不过与java不同的是,它可以定义自己的属性和实现方法体,在没有自己的实现方法体时可以认为它时java interface是等价的,在Scala中也是一般只能继承一个父类,可以通过多个with进行多重继承。

转载于:https://my.oschina.net/u/1262062/blog/1785583

scala(3):class和object,trait的区别相关推荐

  1. scala class和object,trait的区别

    2019独角兽企业重金招聘Python工程师标准>>> Scala类 class Counter {private var value = 0 // 必须初始化字段def incre ...

  2. object.getClass()和Object.class的区别

    https://blog.csdn.net/xiaokang123456kao/article/details/72859765 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 ...

  3. 技术沙龙系列之:Scala method(方法) 和 functio(函数) 的区别

    下面来简单介绍一下如何来认识Scala method(方法) 和 functio(函数) 的区别,具体如下所示: 在我没有学习 scala 的时候,主要用 java 和 python 做日常工作开发, ...

  4. Spark基础-scala学习(三、Trait)

    面向对象编程之Trait trait基础知识 将trait作为接口使用 在trait中定义具体方法 在trait中定义具体字段 在trait中定义抽象字段 trait高级知识 为实例对象混入trait ...

  5. scala中val与def定义的区别

    scala中val与def定义的区别 变量 val定义一个不可改变的变量, def则是一个方法: //scala中定义: def main(args: Array[String]): Unit = { ...

  6. each(callback)与each(object[,callback])的区别

    each(callback)与each(object[,callback])的区别: 1. 调用对象不同,前者必须使用jQuery对象调用:后者只能使用$调用: 2. 遍历对象不同:前者遍历的是jQu ...

  7. 展开运算符和object.assign()的区别

    Object Spread 和 Object.assign 在功能上很相似.你应该使用哪一个? 事实证明,答案比你想象的要微妙许多. Object Spread 概论 object Spread 运算 ...

  8. new Object()和Object.create()的区别

    Object.create() 创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. --MDN 语法 Object.create(proto, [propertiesObject] ...

  9. Object.setPrototypeOf 与 Object.create() 的区别

    在讲之前,我们先回顾下创建对象的几种方式,并且Object.new Object() 和 Object.create 的区别 ①:字面量方式创建对象 let person = {name: 'nick ...

最新文章

  1. Gartner:为什么每一位首席执行官都应重视物联网并为其投资?
  2. 网络配置——Linux运维基础
  3. 成功解决ModuleNotFoundError: No module named ‘sklearn.lda‘
  4. MySQL的数据存储方式的概述
  5. 实时平台在趣头条的建设实践
  6. c0000005错误怎么解决_iTunes提示3194未知错误怎么办【解决方法】
  7. node-glob学习
  8. Symfony 4.2.4 和 3.4.23 发布,经典 PHP Web 开发框架
  9. python 老师和父亲_父亲节丨有个当老师的爸爸是怎样的体验
  10. 阿里ai布局开始_如何从AI开始?
  11. Cgroup框架分析
  12. redis集群原理及搭建
  13. 哔哩哔哩APP导出缓存视频并合并成MP4
  14. 三步激活win10(转)
  15. 一本通1548【例 2】A Simple Problem with Integers
  16. 三个有用的Switch命令:spanning-tree portfast、switchport host、smartport
  17. 再谈OT算法的协同文档制作的底层基础架构记录
  18. 神奇的canvas——点与线绘制的绚丽动画效果
  19. 用计算机说早上好,每日早上好的句子
  20. 初级前端工程师课程导航-姜威-专题视频课程

热门文章

  1. 将字符串分解成一个表(多行、多列)表值函数[ StrSplit_Tab]
  2. 函数指针---C/C++中int *f(4)和int (*f)(4)的区别
  3. JS服务器端开发基础篇(Array.slice方法和splice方法)
  4. Repeater 嵌套
  5. 【Ubuntu】ubuntu webqq桌面版pywebqq
  6. Spring2.5+MINA2搭建Socket Server
  7. Windows7下最新Android开发环境搭建(JDK1.7 + Eclipse Indigo(3.7) + SDK-r12 + ADT-12)
  8. mbr,gpt,开机启动流程.
  9. nodejs开发部署工具,守护进程
  10. linux 下面安装 .sh 格式的软件