scala getter and setter
package exp { object Main { def main(args: Array[String]): Unit = {
B.name ="Fred";
println(B.getName())
}
} class A {
private var n: String = null;
val getName = () => this.n; // println(a.getName); 返回<function0> 对象或类用val 定义的方法不能省略括号否则返回函数本身
val setName = (x: String) => this.n = x; //对象或类用val定义的方法如果有参数,省略点号和参数的括号是可以的
val updateName: String => Unit = x => this.n = x;
//getter setter 属性定义必须这么做,方法定义可以用上面的def val 等各种方法
def name = this.n;
def name_=(x: String) = this.n = x; //或 def name_= : String=>Unit = x => this.n = x;
} //object 相当于java中的静态方法,其实是用class 的单例静态对象实现的,所以可以继承java的类,但是object不能被继承了
object B extends A;
//object C extends B -> not found:Type B
}
抽象 val 只生成抽象getter,抽象var生成抽象的getter和setter
trait AbstractTime
{
val hour:Int;
var minute:Int;
}
生成的java代码如下
public interface AbstractTime
{
public abstract int hour();
public abstract int minute();
public abstract void minute_$eq(int i);
}
trait TRat
{
val n:Int;
val d:Int;
val n_d = n/d; //lazy val n_d = n/d;
} object Main {
def main(args: Array[String]): Unit = {
val x = new {val n=20; val d=5} with TRat; //new TRat{val n=20; val d=5};
//如果这么构造的话,两个值的匿名类结构体对象在构造TRat匿名类后构造,
//因此n/d将出现div zero异常,除非 val n_d 设置为lazy val 或 def
println(x.n_d);
}
}
scala getter and setter的更多相关文章
- 【scala】getter和setter
我们在用Java的时候经常把一些字段定义为private类型来完成封装,这样外界就无法访问. 如果外界访问或者修改该字段的时候,只能通过该字段提供的getter和setter方法来实现. 在Scala ...
- 快学Scala 第六课 (类getter和setter)
类getter和setter 如果字段定义是private[this], 字段是私有的,但不生成getter和setter方法. class Counter { private[this] var v ...
- 基于 getter 和 setter 撸一个简易的MVVM
Angular 和 Vue 在对Angular的学习中,了解到AngularJS 的两个主要缺点: 对于每一次界面时间,Ajax 或者 timeout,都会进行一个脏检查,而每一次脏检查又会在内部循环 ...
- 由Vue引发的getter和setter思考
公司的新项目决定使用Vue.js来做,当我打印出Vue实例下的data对象里的属性时,发现了一个有趣的事情: 它的每个属性都有两个相对应的get和set方法,我觉的这是多此一举的,于是去网上查了查Vu ...
- 为什么要设置getter和setter?
面向对象语言中,通常把属性设置为私有,然后添加getter和setter方法来访问.有人说,这本质上和设置属性为公有没有区别,干脆把属性public算了.也有人反驳,这样做破坏了封装.但是,破坏了封装 ...
- javascript权威指南笔记--javascript语言核心(五)--getter和setter属性
getter和setter属性: var p = { x:1.0, y:1.0, get r(){ return Math.sqrt(this.x*this.x + this.y * this.y); ...
- [图解教程]Eclipse不可不知的用法之一:自动生成Getter、Setter和构造方法
[图解教程]Eclipse不可不知的用法之一:自动生成Getter.Setter和构造方法 关键词:Getters and Setters.getter和setter方法.Constructor us ...
- 属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter
属性声明(property declarations), 自定义属性,自动生成 get 和 set 方法,getter 和 setter 一.普通的get 和set 属性. 一般的get 和set 属 ...
- Vue引发的getter和setter
Vue引发的getter和setter 公司的新项目决定使用Vue.js来做,当我打印出Vue实例下的data对象里的属性时,发现了一个有趣的事情: 它的每个属性都有两个相对应的get和set方法,我 ...
随机推荐
- 【ASM C/C++】 Makefile 规则说明
make 命令会自动读取当前目录下的 Makefile 文件[31],完成相应的编译步骤.Makefile 由一组规则(Rule)组成,每条规则的格式是:target ... : prerequisi ...
- 微信web开发者工具
http://mp.weixin.qq.com/wiki/10/e5f772f4521da17fa0d7304f68b97d7e.html#.E4.B8.8B.E8.BD.BD.E5.9C.B0.E5 ...
- http websocket
套接字 http 协议 tcp/ip协议 服务器端口 网络协议 http://wenku.it168.com/d_001406013.shtml 跨源 AJAX 事件驱动 http://www.lin ...
- android学习之路--------intent
正式开始学习android,没有看书和视频,所以没有系统的学,只是看到哪个知识点就去学习,今天学习界面之间的跳转,以及传值,主要的知识点是intent, @Override protected voi ...
- 如何离线创建Ionic/cordova项目
在创建ionic项目的时候,需要联网下载许多东西,由于墙的缘故,我们在创建.添加android平台.编译过程中,失败的可能性非常高,为解决这个问题,我创建了一个空的Ionic1 tab项目,并完成了上 ...
- pandas处理数据
读文件 pd.read_csv('path/to/file.txt',header=0,names='ab',index=0) names Columns这个可以不写,制定索引列是第一列,这样就没有序 ...
- [地图SkyLine二次开发]关于IE内存限制问题(1G)
相信很多人也遇到过同样的问题,地图加载中,IE占用的内存一直增加,到了1G多一些的时候,IE就崩溃了. 在网上查阅了一番,有很多结果,下面归纳一下: a).64bit的IE最多可达到4G的内存,但Sk ...
- (十八)WireShark 过滤语法
1.过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1. ...
- (十四)UDP协议的两个主要方法sendto和recvfrom详解
在网络编程中,UDP运用非常广泛.很多网络协议是基于UDP来实现的,如SNMP等.大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的. 本篇文章跟大家分享linux下UDP的使用和实现,主要 ...
- Deep Learning 25:读论文“Network in Network”——ICLR 2014
论文Network in network (ICLR 2014)是对传统CNN的改进,传统的CNN就交替的卷积层和池化层的叠加,其中卷积层就是把上一层的输出与卷积核(即滤波器)卷积,是线性变换,然后再 ...