Scala学习第十章 特质

本文探讨了Scala中的特质概念,包括其如何结合抽象与具体方法,支持部分实现,以及多个特质的混合使用。文章还介绍了特质构造顺序的具体规则,并通过实例说明了这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Java中,类只能扩展自一个超类,可以实现任意数量的接口,但接口中只能包含抽象类,不能包含字段,

scala提供"特质",而非接口,特质可以同时拥有抽象方法和具体方法,支持部分实现,类可以实现多个特质.

让特质拥有具体行为存在一个弊端.当特质改变时,所有混入了改特质的类都必须重新编译

一般来说特质从最后一个开始被处理

在JVM 中一个类只能扩展一个超类


特质构造顺序:

1.首先调用超类的构造器

2.特质构造器在超类构造器之后,类构造器之前执行

3.特质由左到右被构造

4.每个特质中,父特质先被构造

5.如果多个特质共有一个父特质,如果那个父特质已经被构造,则不会再次构造.

6.所有特质构造完毕,子类被构造


举个例子:

class SavingsAccount extends Account with FileLogger with ShortLogger

构造器将按照如下的顺序执行:

1.Account(超类)

2.Logger(第一个特质的父类)

3.FileLogger(第一个特质)

4.ShortLogger(第二个特质).注意它的父特质Logger已被构造

5.SavingsAccount(类)


特质不能有构造器参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值