从JAVA到scala(二):消失的static关键字
来源:互联网 发布:怎么看淘宝店铺地址 编辑:程序博客网 时间:2024/06/05 16:11
scala在JAVA之上增加了很多深奥的关键,例如match、type、implicit,却抹除了我们无比熟悉的static关键字。既然没有static,那我们怎么在scala中定义类的静态方法与属性呢?
真要做起来,其实比JAVA还绕(scala真的简洁吗?),具体分为以下两步:
1. 在这个类的同一份文件中添加伴生对象,也就是同名的object,注意一定要在同一份文件中;
2. 在伴生对象定义方法与属性,这样就可以通过类名(对象名)来访问属性与方法了;
举个简单的例子,如下:
// 定义了私有属性class People(private val username: String) {}object People { // 伴生对象可以访问私有属性 def welcome(self: People): String = { s"Hello, ${self.username}!" }}
单元测试代码如下:
class PeopleTest extends FunSuite { test("welcome show equals") { val p = new People("yiifaa") // scala中==可以比较值,不比较地址 assert(People.welcome(p) == "Hello, yiifaa!") }}
从上面的代码可以看出:
1. 伴生对象可以访问类的私有属性(同一份文件中的其他对象与类也不可以);
2. 伴生对象无法访问类的上下文,即this;
如果将代码改进下,我们还发现,伴生对象与类还具有如下关系:
3. 类也可以访问伴生对象的私有属性;
4. 伴生对象对所有的实例而言,都是共享的(独一份),就跟JAVA中类属性一模一样;
class People(private val username: String) { // 引入People伴生对象的全部对象与方法 import People。._ // 也可以携带名称访问,如People.showname(this) def show = showname(this)}object People { // 定义私有方法 private def showname(self: People): Unit = { println(self.username) } def welcome(self: People): String = { s"Hello, ${self.username}!" }}
结论
scala可以通过伴生对象实现static的作用,在这一点上,跟JAVA相比,scala毫无优势,并且性能还略有损耗,毕竟类方法的执行效率高于实例方法,但在单例模式上,scala就是从语法上支持,比JAVA快捷太多了。
阅读全文
0 0
- 从JAVA到scala(二):消失的static关键字
- 从c++到java 之二(static)
- Scala起步--从Java到Scala
- Scala读书笔记一:从Java到Scala
- java 的static关键字
- Java的static关键字
- Java的static关键字
- java的static关键字
- Java学习(二)Static关键字的理解
- Java关键字(二)static关键字(static声明属性)
- Java之美[从菜鸟到高手演变]之Java中static关键字
- Java之美[从菜鸟到高手演变]之Java中static关键字
- 从JAVA到Scala(三):implicit的三种用法
- JAVA static 关键字的理解
- 关于Java的static关键字
- 【java】static关键字的总结
- Java 的 static 关键字总结
- JAVA static 关键字的作用
- Kali Linux快速打开终端快捷键
- bzoj1016 [JSOI2008]最小生成树计数(kruskal+dfs+乘法原理)
- MyBatis动态SQL底层原理分析
- Java 面向对象 封装 继承 多态
- java基础—抽象类和接口的区别
- 从JAVA到scala(二):消失的static关键字
- zabbix源码安装时报错:MySQL library not found---zabbix
- 类和对象
- 从零开始前端学习[27]:html5中的特殊结构标签,ruby,mark,meter,progress,details
- ios-tableView的行高计算
- Linux安装
- 数据库存储引擎 MyISAM InnoDB
- 链路层简要介绍
- 17090601_CentOS7(64位)永中Office安装&卸载