Scala和Java一样不允许类从多个超类继承,在Java中类只能扩展 自一个超类,它可以实现多个接口,但接口中只能包含抽象方法,不能包含字段
Scala提供的"特质"类似于java中的接口, 但又有所不同...首先调用超类的构造器
特质构造器的超类构造器之后,类构造器之前执行
特质由左到右被构造
每个特质当中,父特质先被构造
如果多个特质共有一个父特质,而那个父特质已经被构造,则不会被再次构造
所有特质构造完毕...另外特质中不能有构造器参数,每个特质都有一个无参数的构造器
特质没有构造器参数是特质与类之间的其中一个差别,其它的特质具备类的所有特性,比如具体的和抽象的字段,以及超类
特质扩展类
上面我们看到了特质可以扩展另一个特质...继承了IOException,而IOException是扩展自Exception
自身类型:
当特质扩展类时,编译器能够确保所有混入该特质的类都认这个类为超类,Scala还有另一套机制可以保证这一点:自身类型...$time_$eq(15)
}
}
当特质被混入类的时候,类将会得到一个带有getter和setter的time字段,那个类的构造器会调用初始化方法
如果特质扩展自某个超类,则伴生类并不继承这个超类,