这是Scala中特性的最基本版本。
trait Identifiable { def getIdentifier: String def printIndentification(): Unit = println(getIdentifier) } case class Puppy(id: String, name: String) extends Identifiable { def getIdentifier: String = s"$name has id $id" }
由于没有为trait声明超类Identifiable,因此默认情况下它是从AnyRefclass扩展的。因为没有getIdentifier提供的定义Identifiable,所以Puppy该类必须实现它。然而,Puppy继承的实现printIdentification从Identifiable。
在REPL中:
val p = new Puppy("K9", "Rex") p.getIdentifier // res0:字符串= Rex的ID为K9 p.printIndentification() // 雷克斯的ID为K9
特征是语言的结构构造,允许 - Composition of behaviors. 接口的运行时实现。 与静态类型检查/编译的兼容性 它们可以被视为承载默认实现和状态的接口。 使用trait关键字定义特征。 下面给出了一个特征的例子 - trait Marks { void DisplayMarks() { println("Display Marks"); } } 然
一、继承 1.1 Scala中的继承结构 Scala 中继承关系如下图: Any 是整个继承关系的根节点; AnyRef 包含 Scala Classes 和 Java Classes,等价于 Java 中的 java.lang.Object; AnyVal 是所有值类型的一个标记; Null 是所有引用类型的子类型,唯一实例是 null,可以将 null 赋值给除了值类型外的所有类型的变量; N
主要内容:第一个 Scala 程序,脚本形式,HelloWorld.scala 文件代码:,基本语法,标识符,Scala 关键字,Scala 注释,空行和空格,换行符,Scala 包如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的。 我们可以认为 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递。接下来我们来理解下,类,对象,方法,实例变
如果你之前是一名 Java 程序员,并了解 Java 语言的基础知识,那么你能很快学会 Scala 的基础语法。 Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的。 我们可以认为 Scala 程序是对象的集合,通过调用彼此的方法来实现消息传递。接下来我们来理解下,类,对象,方法,实例变量的概念: 对象 - 对象有属性和行为。例如:一只狗的状属性有:颜色,名字,行为有
Scala 基础教程
主要内容:实例,实例,特征构造顺序Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。 与接口不同的是,它还可以定义属性和方法的实现。 一般情况下Scala的类只能够继承单一父类,但是如果是 Trait(特征) 的话就可以继承多个,从结果来看就是实现了多重继承。 Trait(特征) 定义的方式与类类似,但它使用的关键字是 trait,如下所示: 实例 trait Equal { def isEq