scala学习(十五)——trait

scala学习(十五)——trait

下面是一个trait的简单例子,里面包含的trait的基本用法,trait的继承:
trait Logger{
    //这里在java的接口中只能声明为静态的,在trait中能够声明成var,而不必须声明成val,trait可以简单的认为是抽象类和接口
    var name = "tom"
    def log(msg:String)
    def info(msg:String){
        log("INFO" + msg)
    }
    def warn(msg:String){
        log("WARN:" + msg)
    }
}

trait Logger2{
}

trait Logger3{
}

import scala.reflect._
class Dog extends Logger with Logger2 with Logger3{
    override def log(msg:String){
        println(msg)
    }
    
    def run(){
        info("xxx")
    }
    def setName(s:String){
        this.name =s
    }
}

object main{
    def main(args:Array[String]){
        var d = new Dog
        d.log("heihei")
        d.run
        println(d.name)
        d.setName("aa")
        println(d.name)
    }
}

下面是运行截图:


这个也是:
trait Logger{
    def log
    def newlog(msg:String) = {
        println(msg)
    }
}
trait Logger2{
    def log2
}
trait Logger3{
    def log3
}

//多个trait使用with进行连续继承
//特质和类的区别是不能有主构造函数
class Dog extends Logger with Logger2 with Logger3{
    def log = println("log")
    def log2 = println("log2")
    def log3 = println("log3")
}

object main{
    def main(args:Array[String]){
        var d = new Dog
        d.log
        d.log2
        d.log3
        d.newlog("aabbcc")
    }
}

下面是运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值