Step1 查看目标类的继承结构
Step2 当目标类基类为abstart class时
trait HBaseTableScanTrait extends RDD {
override def methodNeedModify {
}
}
class newHBaseTableScanRDD extends HBaseTableRDD with trait HBaseTableScanTrait {
//实际使用HBaseTableScanTrait中的methodNeedModify
}
Step3 不希望特质继承目标类基类时
trait HBaseTableScanTrait {
def methodNeedModify {
}
}
class newHBaseTableScanRDD extends HBaseTableRDD with trait HBaseTableScanTrait {
//实际使用HBaseTableScanTrait中的methodNeedModify
override def methodNeedModify = super.methodNeedModify
// 下面用法可以显式指定使用哪个基类的冲突函数版本
// override def methodNeedModify = super[HBaseTableRDD].methodNeedModify
}
Why
Step2中利用了scala继承关系优先使用右侧特质的同一方法
Step3中利用了scala继承关系super指向最右侧特质,且override关键字用于解决多个基类中出现同参数列表同返回类型函数的冲突问题