zoukankan      html  css  js  c++  java
  • Scala学习之延迟绑定

     1 package com.swust.example
     2  
     3 object TraitDemo2 extends App{
     4  
     5    //抽象类
     6      abstract class Writer {
     7         def writeMessage(message: String)
     8      }
     9      /**
    10       * 继承这个抽象类,并且用super调用了这个抽象方法
    11       * scala要求将方法声明为abstract override
    12       * override告诉scala要为基类的一个已知方法提供一个实现
    13       * abstract表示这个方法实际最后的终极实现要由混入这个trait的类提供
    14       */
    15      trait UpperCaseWriter extends Writer{
    16         abstract override def writeMessage(message: String)={
    17            super.writeMessage(message.toUpperCase)
    18         }
    19      }
    20      /**
    21       * 为了调用super.writeMessage,scala做了两件事情
    22       * 1、对这个调用进行了延迟绑定
    23       * 2、要求混入这些trait的类提供该方法的实现
    24       */
    25      trait WordFilterWriter extends Writer{
    26         abstract override def writeMessage(message: String)={
    27            super.writeMessage(message.replace("stupid","s-----"))
    28         }
    29      }
    30      class StringWriterDelegate extends Writer{
    31         val writer = new java.io.StringWriter
    32         //实现抽象类的方法,不用override
    33         def writeMessage(message: String) = writer.write(message)
    34         override def toString(): String = writer.toString
    35      }
    36      //创建实例时混入trait
    37      val first = new StringWriterDelegate with UpperCaseWriter with WordFilterWriter
    38      val last = new StringWriterDelegate with WordFilterWriter with UpperCaseWriter
    39      first.writeMessage("there is no sin except stupidity")
    40      last.writeMessage("there is no sin except stupidity")
    41      println(first)
    42      println(last)
    43       
    44 }
  • 相关阅读:
    Laravel5.1 响应--Response
    Laravel5.1 请求--Request
    Laravel5.1 控制器--Controller
    Laravel5.1 模型--查询作用域
    Laravel5.1 模型--删除
    VMware Workstation错误Transport(VMDB)error -44:Message
    如何给flash里面添加链接
    巧用:empty解决webkit核心浏览器text-indent的bug
    form radio & checkbox解决方案
    字符串的第几个
  • 原文地址:https://www.cnblogs.com/sunfie/p/5077262.html
Copyright © 2011-2022 走看看