scala trait基础
scala Trait-- 作为接口使用
可以 继承多个 trait
scala> :paste
// Entering paste mode (ctrl-D to finish)
trait Hello1 {
def sayHello1
}
trait Hello2 {
def sayHello2
}
trait Hello3 {
def sayHello3
}
class Hello extends Hello1 with Hello2 with Hello3 {
def sayHello1 { println(" hello1")}
def sayHello2 {println("hello2")}
def sayHello3 {println(" hello3")}
}
// Exiting paste mode, now interpreting.
defined trait Hello1
defined trait Hello2
defined trait Hello3
defined class Hello
scala> val h = new Hello
h: Hello = Hello@3d26e7ba
scala> h.sayHello1
hello1
scala> h.sayHello2
hello2
scala> h.sayHello3
hello3
----------------------------------
trait 中定义具体方法
scala> trait helloTrait {
| def sayHello { println(" print helloTraint ")}}
defined trait helloTrait
scala>
scala>
scala> class Hello extends helloTrait
defined class Hello
scala> val h = new Hello
h: Hello = Hello@2358a9f9
scala> h.sayHello
print helloTraint
----------------------------------
trait 中定义具体的 字段
scala> trait Hello1 {
| val name="---hello1---"}
defined trait Hello1
scala>
scala> class Hello extends Hello1
defined class Hello
scala> val h = new Hello
h: Hello = Hello@5074dd7
scala> h.name
res16: String = ---hello1---
----------------------------------
trait 中定义抽象字段
scala> trait Hello1 {
|
| val name:String
| }
defined trait Hello1
scala> class Hello extends Hello1
<console>:12: error: class Hello needs to be abstract, since value name in trait Hello1 of type String is not defined
class Hello extends Hello1
^
scala> class Hello extends Hello1 {
| val name="kkkkk"}
defined class Hello
scala> val h = new Heloo
<console>:11: error: not found: type Heloo
val h = new Heloo
^
scala> val h = new Hello
h: Hello = Hello@16d967e3
scala> h.name
res17: String = kkkkk