文档章节

Why does Scala not provide any static modifier?

翟志军
 翟志军
发布于 2015/02/23 21:25
字数 358
阅读 128
收藏 0

Scala doesn't provide any static modifier, and that has to do with the design goal of building a pure object-oriented language where every value is an object, every operation is a method call, and every variable is a member of some object. Having static doesn't fit well with that goal, and along with that there are plenty of downsides to using static in the code. Instead, Scala supports something called singleton objects.

Scala没有提供任何的static修饰符,目的是为了创建一个纯的面向对象语言,任何值都是一个对象,任何操作都是对象的方法调用,任何变量都是某个对象的成员。

但static修饰符不符合这一目的,而且在代码中不使用static已是大势所趋。Scala使用单例object来代替static.

虽然,这样说了,我还不是很明白。我从《面向对象分析与设计》中看到“面向对象编程”的定义:

面向对象编程是一种实现方法,在这种方法中,程序被组织成许多相互协作的对象,每个对象代表某个类的一个实例,而类则属于一个通过继承关系形成的层次结构

这样说来,我倒觉得“任何操作都是对象的方法调用”这点不是面向对象编程的必要条件。所以,拿这点来说不支持static,似乎有些牵强。

© 著作权归作者所有

共有 人打赏支持
翟志军

翟志军

粉丝 344
博文 76
码字总数 79851
作品 2
深圳
程序员
RxJava 1.0.14 发布,现已提供下载

.Net响应式编程框架Rx的Java版本开源实现,是一种JVM语言,有Groovy, Clojure, Scala and JRuby版本的实现 此版本更新内容如下: Pull 2963 Set of standard producers and updated queue im...

oschina
2015/08/17
2.5K
1
编程技巧:使用整数同时进行多个true|false判断(修改版)

Scene 情景假设 情景一:银行账户的快速判断; 假设需要判断某银行用户的其中一个账号(profileA),币种(Currency)为人民币(CNY),余额是否大于1,0000,然后进行某业务逻辑处理。 情景二...

大鱼BIG_FISH
2015/11/06
0
0
[Lucene.Net] 多线程操作建议和[Lucene.Net] 分页显示

对于并发,Lucene.Net 遵循以下规则: 1. 允许任意多的读操作并发,即任意数量用户可同时对同一索引做检索操作。 2. 即便正在进行索引修改操作(索引优化、添加文档、删除文档),依然允许任意...

长平狐
2013/06/17
133
0
When Monolithic Is the Way: Play vs. Spring Boot vs. Grails

Nowadays, when we are going to start a new project, the developer starts thinking about the technology, and usually they come up with something like: microservices, RESTFul, Act......

Marini Fabio
2017/12/20
0
0
深入理解Java Proxy机制

动态代理其实就是java.lang.reflect.Proxy类动态的根据您指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有你指定的接口(您在参数中传入的接口数组);然后再利用您指定...

milne
2015/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
今天
1
0
AVA中CAS-ABA的问题解决方案AtomicStampedReference

了解CAS(Compare-And-Swap) CAS即对比交换,它在保证数据原子性的前提下尽可能的减少了锁的使用,很多编程语言或者系统实现上都大量的使用了CAS。 JAVA中CAS的实现 JAVA中的cas主要使用的是...

码代码的小司机
今天
2
0
Android JNI开发系列(十三) JNI异常处理

JNI 异常处理 JNI异常与JAVA处理异常的区别 JAVA 有异常处理机制,而JNI没有 如果JAVA中异常没有捕获,后面的代码不会执行,JNI会执行 JAVA编译时的异常,是在方法显示的声明了某一个异常,编...

蔡小鹏
今天
2
0
简单介绍Java 的JAR包、EAR包、WAR包区别

WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVA WEB工程,都是打成WAR包进行发布的。 War是...

Linux就该这么学
今天
3
0
Qt那些事0.0.7

在帮助文档(Overview - QML and C++ Integration)中随缘遇到一张图,是关于C++对象与QML整合介绍的,值得标记下来,虽然大部分功能也有所涉猎,但是还是留个记号,万一哪天我失忆了还想写Q...

Ev4n
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部