Scala学习第十七弹 类
来源:互联网 发布:java中的cgi 编辑:程序博客网 时间:2024/06/05 07:41
这次主要讲scala如何实现类,如果你学习过java和c++中的类,你就会知道这并没有多难,而且你会更加享受scala简洁的表达方法的便利。
简单类和无参方法
scala类最简单的方法看上去和java或c++中的很相似:
class Couter{
private var value = 0//必须初始化字段
def increment(){ value += 1 }方法默认是公有的
def count() = value
}
在scala中,类并不声明为public。scala源文件可以包含多个类,所有这些类都具有公有可见性。
使用该类的方法就是构造对象并按照通常的方法来调用方法:
val mycounter = new Counter
mycounter.increment()
println(mycounter.count)
调用无参方法时可以协商圆括号也可以不写:
mycounter.count( )//ok
mycounter.count //ok
一般认为当调用改变对象状态的方法时使用(),当调用不改变对象状态的方法时去掉()是不错的风格。
mycounter.increment()
带有getter和setter的属性
scala对每个字段都提供getter和setter方法,定义一个公有字段:
class Person{
var age = o
scala生成面向JVM的类,其中有一个私有的age字段以及对应的setter和getter方法,这两个方法是公有的,因为我没有把age声明为private。对于私有字段而言,setter和getter方法也是私有的。
在scala中getter和setter方法分别叫做age和age_=。例如:
print(fred.age)//调用ferd.age()
fred.age_ = 20//调用ferd.age = (21)
在Scala中,getter和setter方法并非定义为getXxx和setXxx,不过他们的用意是相同的
只有getter属性
有时需要一个只读属性,只有getter方法,如果属性的值在对象构建后就不再改变,可以用val 字段:
class Message{
val timeStamp = new java.util.Date
}
scala会生成一个私有的final字段个一个getter方法,没有setter方法
但是你有是需要一个属性,客户端不能随意改值,但是可以通过其他方式。
class Counter {
private var value = 0
def increment() { value += 1 }
def count() = value
}
总结一下:实现属性时一共有四个选项:
- var foo:scala自动生成一个getter一个setter val
- foo:scala自动生成一个getter
- 由你来定义foo和foo_方法
- 由你来定义foo方法
-注意:在scala中不能实现只写属性(即带有setter却不带getter的属性)
- Scala学习第十七弹 类
- Scala学习整理[第十七-十八章 集合和有状态对象]<Programming In Scala>
- Scala学习笔记-类
- scala学习笔记-类
- scala学习第三弹:scala实战
- Scala学习第一弹 Scala简介
- [Scala]Scala学习笔记四 类
- Scala学习(五)---Scala中的类
- Programming In Scala笔记-第十七章、Scala中的集合类型
- php学习 第十七节
- Scala学习第八弹 循环
- Scala学习第十弹 函数
- Scala学习第十一弹 字符串
- Scala学习第十二弹 数组
- Scala学习第十五弹 映射
- Scala学习笔记2--类
- scala学习——类
- scala学习笔记6 类
- 基于Centos7的pip安装tensorflow
- PHP array_multisort—对多个数组或多维数组进行排序
- 学习转载系列-《安卓自定义View教程目录》
- 安卓使用”百度地图SDK“的技术总结以及“常见错误处理”
- python3入门学习
- Scala学习第十七弹 类
- BZOJ2795 [Poi2012]A Horrible Poem
- iptables的使用方法(带常用实例)
- 微信公众号 创建菜单post数据格式
- C语言 之编译器优化
- 解析 Qt 网络之UDP 网络基础学习
- android 5.1编译问题
- 统一全站字符编码
- Spring 4.x框架中的新特性---Spring4.0框架的新功能和改善