scala中的接口——trait

scala中的接口

没有接口,采用trait(特征)来代替接口的概念,类似于java中的 interface+abstract class, scala中称为类 混入/继承 了特质

特质 trait

– 可以类比java中的接口,但是又和接口非常不一样

定义特质

		trait xxx{
			def m1()
			def m2(){....}
}

和java中的接口不同 scala中的特质可以包含具有方法体的方法(java8也可以在接口中定义具有方法体的方法)

和抽象类不同的地方在于 scala的类只能单继承 但是可以多混入 利用这种方式可以实现类似c语言中多继承的特性

特质的两种使用方式

混入特质 with,被实现的方式不具有传递性

继承特质 extends,使方法具有了传递性

如果类没有明确继承父类,即extends关键字没有被占用 就可以使用extends 但是如已经使用了extends继承了父类 再向混入特质就要用 with关键字了 一个类的声明中只能有一个 extends 但是可以有多个with

继承和特质的区别不在于技术上而在于逻辑上

继承的目的——为了符合继承结构树,表明它是啥;

实现特质的目的——为了混入某些特性

		trait Run{
			def run()
			def run(length:Long){
			}
		}
		trait Eat{
			def eat()
		}

		trait Sleep{
			def sleep()
		}
		class Demo10 extends Run with Eat with Sleep {
			def run(): Unit = {
			}

			def eat(): Unit = {
			}

			def sleep(): Unit = {
			}
		}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值