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 }
  • 相关阅读:
    JavaScript的正则表达式的基础
    运用JS判断代码可以参考学习
    调用百度地图代码
    运用了css,js
    中国地图(Highmaps)
    Centos
    代理模式【 动态代理与静态代理】
    java集合 collection-list-LinkedList 模拟一个堆栈或者队列数据结构。
    java集合 collection-list-LinkedList
    java集合 collection-list-vector
  • 原文地址:https://www.cnblogs.com/sunfie/p/5077262.html
Copyright © 2011-2022 走看看