不是特别懂,但感觉和RUBY当中的MIX-IN功能有几分相似,这又扯到了多重继承及JAVA当中的接口虚拟类了。。
package com.hengheng.scalaclass UseTrait {} trait Logger {def log(msg : String) {println("log : " + msg)} } trait ConsoleLogger extends Logger {override def log(msg : String) {println(msg)} } class Test extends ConsoleLogger {def test() {log("Here is Spark!")} } class ConcreteLogger extends Logger {def concreteLog {log("It's me!")} } object UseTrait extends App {var logger = new ConcreteLoggerlogger.concreteLogvar test = new Testtest.test }
输出:
log : It's me!
Here is Spark!