scala基础17-多重继承/混入特质需重写抽象方法

本文介绍Scala中特质的使用及多重继承的特点。特质可以继承普通类,并且在Scala中可以实现多个特质,构造顺序遵循从左到右的原则。文章通过具体示例展示了如何定义和使用特质,以及如何在类中混合特质。

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

class Human {
  println("Human")
}

/*
 * 和java不同,trait可以继承普通的类
 * trait不能实例化
 */
trait TTeacher extends Human {
  println("TTeacher")
  def teach
}

trait PianoPlayer extends Human {
  println("PianoPlayer")
  def playPiano = {
    println("I am playing piano")
  }
}

/*
 * 多重继承
 * 构造顺序从左往右
 * scala规则:不会重复构造,如下面的程序TTeacher、PianoPlayer不会重复构造Human
 */
class PianoTeacher extends Human with TTeacher with PianoPlayer {
  override def teach = {
    println("I am training students")
  }
}

object Test {
  def main(args: Array[String]) {
//    def t1 = new PianoTeacher
//    t1.playPiano
//    t1.teach
    
    //创建对象时混入特质,要重写trait中的抽象方法
    def t2 = new Human with TTeacher with PianoPlayer {
      override def teach = {
        println("t2: I am training studend")
      }
    }
    t2.playPiano
    t2.teach
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值