博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala学习笔记2:面向对象编程部分基础
阅读量:5327 次
发布时间:2019-06-14

本文共 898 字,大约阅读时间需要 2 分钟。

以下主要记录的是看完scala in programming这本书Functional Objects(第六章)后的要点总结。

1,程序中可变对象(var)和不可变对象(val)使用的权衡问题

 不可变对象(val)相比较可变对象(var)

  优点:简单,没有状态的变化,没有多线程问题。

  缺点:需要对象大量copy,比较损耗空间和时间。

  (例如Java中的String也是不可变变脸,但是为了大量对象copy,我们有时会用StringBuilder)

    

2,基于scala实现一个基本类主要包含以下几个方面:

  2.1 和Java不同,类可以直接带参数,参数不是成员变量,要引用对象中某个变量时得声明为fields。形式如下:    

1 class Rational(n: Int, d: Int) {2       val numer: Int = n  3 }

  2.2 require进行条件检查,不符合条件会跑出异常

  2.3 this使用和java相似

  2.4 主构造函数和辅构造函数

    和Java一样,scala中的类也可以有多个构造函数。但是scala中的构造函数有主构造函数和辅构造函数之分。像上面Rational的主构造函数就是this(a, b)的形式。任何辅构造函数必须先调用其他辅助构造函数或者主构造函数。这样约束,最终所有的构造函数都会调用主构造函数。

  2.5 重载运算符

    Java中没有运算符重载。scala中的运算符重载和C++中的运算符重载类似。

  2.6 函数重载和Java相似

  2.7 类型隐含转换

    scala中的类型隐含转换形式如下(将Int类型转化为Rational类型):

implict def inToRational(x: Int) = new Rational(x)

    隐式转换类型有范围限制,由于是后台自动做的,所以使用起来得小心,要不然都不知道是怎来的。

  

转载于:https://www.cnblogs.com/superhedantou/p/5904745.html

你可能感兴趣的文章
从mysql全备 导入指定数据库的数据:三种考虑方法
查看>>
selenium-远程调用
查看>>
mac 安装Jenkins
查看>>
pytest-fixture
查看>>
selenium-窗口切换
查看>>
selenium-滚动
查看>>
allure测试报告
查看>>
Python-selenium显示等待
查看>>
win安装appium
查看>>
Python-selenium:鼠标键盘事件
查看>>
Ubuntu18.04中安装virtualenv和virtualenvwrapper
查看>>
selenium-绕过登录
查看>>
read from and write to file
查看>>
下载文件,blob方式
查看>>
使用vue的v-model自定义 checkbox组件
查看>>
Amcharts 柱状图和线形图
查看>>
APC注入
查看>>
关于ES6 Class语法相关总结
查看>>
构建之法阅读笔记三—结对编程
查看>>
css中 background:0 0;
查看>>