• Scala的静态方法和实例方法


    Scala的对象学习

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

     object Accounts {
    
      private var lastNumber = 0
    
      /**
        * 定义一个getNumber的方法
        *
        * @return
        */
      def getNumber(): Int = {
        lastNumber += 1
        lastNumber
      }
    
      def main(args: Array[String]): Unit = {
        // 相当于java静态方法调用
       println(Accounts.getNumber())
      }
    

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

    class Account {
    // 实例方法
        ......
    }
    object Account {
    // 静态方法
        ......
    }
    

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

    • 抽象类
    abstract class UndoableAction(val description: String) {
        def undo(): Unit
        def redo(): Unit
    }
    
    object DoNothing extends UndoableAction("Do nothing") {
        override def undo() {}
    }
    // 打开和保存功能尚未实现
    val actions = Map("open" -> DoNothing,"save" -> DoNothing)
    
    • apply方法
    通常一个apply方法返回的是伴生类对象
    Array("Mary","had","little")
    Array(100) 和new Array(100) 两者是不同的概念,前一个表达式调用的是apply(100),输出一个单元素整数100的Array[Int],而第二个表达式调用的是this(100),包含了100个null元素
    以下是apply方法的示例
    class Account private (val id:Int,initialBalance:Double){
        ......
    }
     
     // 伴生对象
    object Account {
        def apply(initialBalance:Double) = {
            new Account(1,initialBalance)
        }
    }
    
  • 相关阅读:
    014-CallbackServlet代码
    PaymentServlet代码
    013-PaymentUtils工具类模板
    案例30-在线支付
    案例29-购物车提交订单
    案例28-清空购物车
    案例27-购物车删除单一商品
    案例26-购物车
    案例25-servlet的抽取
    在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称
  • 原文地址:https://www.cnblogs.com/codegeekgao/p/9619786.html
Copyright © 2020-2023  润新知