在 Java 8 诞生之前, Java 未提供用于定义和使用这类可重用代码的内置机制。为此, Java必须使用特定的方法进行复用某一接口的实现代码。
Java 8 做出了改变。...Scala和Java一样不允许类从多个超类继承,在Java中类只能扩展 自一个超类,它可以实现多个接口,但接口中只能包含抽象方法,不能包含字段
Scala提供的"特质"类似于java中的接口, 但又有所不同...,特质可以同时拥有抽象方法和具体方法,而类可以实现多个特质,同时这也很好的解决了java接口的问题
Scala特质可以如同java接口那样工作
举例:
trait Logger{
def log...Logger已经被构造
5:SavingAccount(类)
特质中重写抽象方法
前面我们提到,在类中实现某个特质的方法时,是不需要加override的,但是在特质中,如果要重写父特质的方法时,需要加上...类型,而下面代码
val h = new Home with LoggerException
上面代码是不合法的,因为Home不是Exception的子类型
同时,特质还可以处理结构类型,这种类型只给出类必须拥有的方法