scala(3):class和object,trait的区别
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的区别相关推荐
- scala class和object,trait的区别
2019独角兽企业重金招聘Python工程师标准>>> Scala类 class Counter {private var value = 0 // 必须初始化字段def incre ...
- object.getClass()和Object.class的区别
https://blog.csdn.net/xiaokang123456kao/article/details/72859765 首页 博客 学院 下载 图文课 论坛 APP 问答 商城 VIP会员 ...
- 技术沙龙系列之:Scala method(方法) 和 functio(函数) 的区别
下面来简单介绍一下如何来认识Scala method(方法) 和 functio(函数) 的区别,具体如下所示: 在我没有学习 scala 的时候,主要用 java 和 python 做日常工作开发, ...
- Spark基础-scala学习(三、Trait)
面向对象编程之Trait trait基础知识 将trait作为接口使用 在trait中定义具体方法 在trait中定义具体字段 在trait中定义抽象字段 trait高级知识 为实例对象混入trait ...
- scala中val与def定义的区别
scala中val与def定义的区别 变量 val定义一个不可改变的变量, def则是一个方法: //scala中定义: def main(args: Array[String]): Unit = { ...
- each(callback)与each(object[,callback])的区别
each(callback)与each(object[,callback])的区别: 1. 调用对象不同,前者必须使用jQuery对象调用:后者只能使用$调用: 2. 遍历对象不同:前者遍历的是jQu ...
- 展开运算符和object.assign()的区别
Object Spread 和 Object.assign 在功能上很相似.你应该使用哪一个? 事实证明,答案比你想象的要微妙许多. Object Spread 概论 object Spread 运算 ...
- new Object()和Object.create()的区别
Object.create() 创建一个新对象,使用现有的对象来提供新创建的对象的__proto__. --MDN 语法 Object.create(proto, [propertiesObject] ...
- Object.setPrototypeOf 与 Object.create() 的区别
在讲之前,我们先回顾下创建对象的几种方式,并且Object.new Object() 和 Object.create 的区别 ①:字面量方式创建对象 let person = {name: 'nick ...
最新文章
- Gartner:为什么每一位首席执行官都应重视物联网并为其投资?
- 网络配置——Linux运维基础
- 成功解决ModuleNotFoundError: No module named ‘sklearn.lda‘
- MySQL的数据存储方式的概述
- 实时平台在趣头条的建设实践
- c0000005错误怎么解决_iTunes提示3194未知错误怎么办【解决方法】
- node-glob学习
- Symfony 4.2.4 和 3.4.23 发布,经典 PHP Web 开发框架
- python 老师和父亲_父亲节丨有个当老师的爸爸是怎样的体验
- 阿里ai布局开始_如何从AI开始?
- Cgroup框架分析
- redis集群原理及搭建
- 哔哩哔哩APP导出缓存视频并合并成MP4
- 三步激活win10(转)
- 一本通1548【例 2】A Simple Problem with Integers
- 三个有用的Switch命令:spanning-tree portfast、switchport host、smartport
- 再谈OT算法的协同文档制作的底层基础架构记录
- 神奇的canvas——点与线绘制的绚丽动画效果
- 用计算机说早上好,每日早上好的句子
- 初级前端工程师课程导航-姜威-专题视频课程
热门文章
- 将字符串分解成一个表(多行、多列)表值函数[ StrSplit_Tab]
- 函数指针---C/C++中int *f(4)和int (*f)(4)的区别
- JS服务器端开发基础篇(Array.slice方法和splice方法)
- Repeater 嵌套
- 【Ubuntu】ubuntu webqq桌面版pywebqq
- Spring2.5+MINA2搭建Socket Server
- Windows7下最新Android开发环境搭建(JDK1.7 + Eclipse Indigo(3.7) + SDK-r12 + ADT-12)
- mbr,gpt,开机启动流程.
- nodejs开发部署工具,守护进程
- linux 下面安装 .sh 格式的软件