Scala -补充- 特质trait与抽象类abstract的区别

本文详细介绍了Scala编程中特质(Trait)与抽象类(Abstract Class)的区别,包括继承特性、构造函数、方法实现等方面。强调了特质支持多继承,适合用于扩展功能,而抽象类能定义构造参数,适用于需要初始化参数的场景。建议优先使用特质进行扩展,当需要构造参数时选择抽象类。
摘要由CSDN通过智能技术生成

1、特质trait与抽象类abstract的区别

1、抽象类不能多继承,只能单继承;特质可以多继承

2、抽象类有带参数的构造函数; 特质没有带有参数的构造函数(比如: trait t(i:Int){} ,这种声明是错误的 )

3、都有抽象方法和已经实现的方法,子类重载其非抽象成员都必须加上override关键字,子类重载其抽象成员时override关键字可选;

2、注意事项:

1、scala中一个类可以继承多个特质 中间用with相连;trailt中的定义的方法,可以有实现,也可以没有实现;

2、优先使用特质,一个类扩展多个特质是很方便的,但却只能扩展一个抽象类;

3、如果需要构造方法参数,使用抽象类,因为抽象类可以定义带参数的构造方法,而特质不行;

3、什么时候应该使用特质而不是抽象类

如果你想定义一个类似接口的类型,你可能会在特质和抽象类之间难以取舍。这两种形式都可以让你定义一个类型的一些行为,并要求继承者定义一些其他行为。

  • 优先使用特质,一个类扩展多个特质是很方便的,但却只能扩展一个抽象类
  • 如果需要构造方法参数,使用抽象类,因为抽象类可以定义带参数的构造方法,而特质不行;
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值