本文概述
- Scala特性示例:未维护Mixins订单
- Scala Mixins订单
- Scala特性示例:Mixins订单保持不变
- Scala特性的另一个例子
必须保持mixin的顺序, 否则编译器将引发错误。
【Scala特性混合用法示例】你可以像这样在scala中使用mixins:
Scala特性示例:未维护Mixins订单在此示例中, 我们扩展了特征和抽象类。让我们看看会发生什么。
trait Print{def print()}abstract class PrintA4{def printA4()}class A6 extends Print with PrintA4{def print(){// Trait printprintln("print sheet")}def printA4(){// Abstract class printA4println("Print A4 Sheet")}}object MainObject{def main(args:Array[String]){var a = new A6()a.print()a.printA4()}}
输出
error: class PrintA4 needs to be a trait to be mixed inclass A6 extends Print with PrintA4{^one error found
上面的程序抛出编译时错误, 因为我们没有保持mixins的顺序。
Scala Mixins订单正确的mixins特性顺序是你要扩展的任何类或抽象类, 首先对其进行扩展。所有特性将在此类或抽象类之后进行扩展。
Scala特性示例:Mixins订单保持不变
trait Print{def print()}abstract class PrintA4{def printA4()}class A6 extends PrintA4 with Print{// First one is abstract class second one is traitdef print(){// Trait printprintln("print sheet")}def printA4(){// Abstract class printA4println("Print A4 Sheet")}}object MainObject{def main(args:Array[String]){var a = new A6()a.print()a.printA4()}}
输出
print sheetPrint A4 Sheet
Scala特性的另一个例子在这里, 我们使用了另一种方法来扩展程序中的特征。通过这种方法, 我们在对象创建过程中扩展了特征。让我们来看一个例子。
trait Print{def print()}abstract class PrintA4{def printA4()}class A6 extends PrintA4 {def print(){// Trait printprintln("print sheet")}def printA4(){// Abstract class printA4println("Print A4 Sheet")}}object MainObject{def main(args:Array[String]){var a = new A6() with Print// You can also extend trait during object creationa.print()a.printA4()}}
输出
print sheetPrint A4 Sheet
推荐阅读
- Akka Actor转发消息示例
- Scala字符串介绍和用法示例
- Scala特质介绍和用法示例
- Scala多维数组
- Scala final关键字用法示例
- Scala数组介绍和用法
- Scala访问修饰符用法实例
- Spring Boot -- 启动流程分析之ApplicationContext 中
- OBEX 4. OBEX Application Framework