学习scala笔记--14 trait 中混合使用 抽象方法 和 具体方法

 

 

 

trait 中覆盖抽象方法    abstract override 

 

 

 

scala> trait Logger { def log(log:String)}

defined trait Logger

 

scala> trait aLogger{ abstract override def log(log:String){ println("---a---"+log);super.log(log)}

     | }

<console>:11: error: value log is not a member of AnyRef

       trait aLogger{ abstract override def log(log:String){ println("---a---"+log);super.log(log)}

                                                                                          ^

 

scala> trait aLogger extends Logger{ abstract override def log(log:String) { println("--a--"+log);super.log(log)}}

defined trait aLogger

 

 

 

----------------------------------

 

 

trait 中混合使用 抽象方法 和 具体方法

可以用来实现  模板方法 模式

 

scala> :paste

// Entering paste mode (ctrl-D to finish)

 

trait Valid {

 def getName:String

 def valid:Boolean = {

   if("tomcat"==getName)

      true

   else

      false

 }

}

 

// Exiting paste mode, now interpreting.

 

defined trait Valid

 

 

 

scala> class C1  extends Valid {

     | def getName:String ={ "xcatlina"}

     | }

defined class C1

 

scala> 

 

scala> 

 

scala> var a = new C1

a: C1 = C1@3df681cc

 

scala> a.valid

res1: Boolean = false

 

scala> class C2  extends Valid {  def getName:String ={ "tomcat"}  }

defined class C2

 

scala> var b = new C2

b: C2 = C2@139da216

 

scala> b.valid

res2: Boolean = true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值