经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Scala » 查看文章
Scala的静态方法和实例方法
来源:cnblogs  作者:codegeekgao  时间:2018/9/25 20:22:15  对本文有异议

Scala的对象学习

Scala没有静态方法或静态字段,可以使用object这个语法达到相同的目的,对象定义了某个类的单个实例

  1.  object Accounts {
  2.  
  3.   private var lastNumber = 0
  4.  
  5.   /**
  6.     * 定义一个getNumber的方法
  7.     *
  8.     * @return
  9.     */
  10.   def getNumber(): Int = {
  11.     lastNumber += 1
  12.     lastNumber
  13.   }
  14.  
  15.   def main(args: Array[String]): Unit = {
  16.     // 相当于java静态方法调用
  17.    println(Accounts.getNumber())
  18.   }

在java中,通常会出现一个类即有实例方法又有静态方法的类,在Scala中可以使用类和同名的伴生对象达到相同的目的

  1. class Account {
  2. // 实例方法
  3.     ......
  4. }
  5. object Account {
  6. // 静态方法
  7.     ......
  8. }

类和它的伴生对象可以相互访问私有特性,但前提是它们都在同一个源文件中

  • 抽象类

  1. abstract class UndoableAction(val description: String) {
  2.     def undo(): Unit
  3.     def redo(): Unit
  4. }
  5.  
  6. object DoNothing extends UndoableAction("Do nothing") {
  7.     override def undo() {}
  8. }
  9. // 打开和保存功能尚未实现
  10. val actions = Map("open" -> DoNothing,"save" -> DoNothing)
  • apply方法

  1. 通常一个apply方法返回的是伴生类对象
  2. Array("Mary","had","little")
  3. Array(100) new Array(100) 两者是不同的概念,前一个表达式调用的是apply(100),输出一个单元素整数100Array[Int],而第二个表达式调用的是this(100),包含了100null元素
  4. 以下是apply方法的示例
  5. class Account private (val id:Int,initialBalance:Double){
  6.     ......
  7. }
  8.  
  9.  // 伴生对象
  10. object Account {
  11.     def apply(initialBalance:Double) = {
  12.         new Account(1,initialBalance)
  13.     }
  14. }
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号