首页 > 代码库 > scala特质
scala特质
package com.ming.test/** * scala 特质,类似与java接口,但是比java接口强大,可以有实现方法,定义字段之类的 *//** * 定义一个日志的特质 */trait LoggerTrait { def logger(str:String):String def loggerDev(str:String):String={"hello"}}/** * 定义一个是否相等的特质 */trait EqualTrait { def isEqual(x: Any): Boolean def isNotEqual(x: Any): Boolean = !isEqual(x)}/** * 定义一个类,继承上面两个特质 */class LoggerClass(xc: Int, yc: Int) extends LoggerTrait with EqualTrait{ var x: Int = xc var y: Int = yc def isEqual(obj: Any) = obj.isInstanceOf[LoggerClass] && obj.asInstanceOf[LoggerClass].x == x def logger(str:String):String={str}}/** * 定义一个空类,打算在使用的时候去实现特质 */class KongClass{ }object TraitTest{ def main(args: Array[String]): Unit = { var a=new LoggerClass(5,6); var b=new LoggerClass(5,6); var c=new LoggerClass(5,7); println(a.isEqual(b)); println(a.isEqual(c)); println(a.isNotEqual(c)); println(a.loggerDev("")); //空类使用继承不同的特质,类似与java实现接口哦 var kong1=new KongClass with LoggerTrait{ def logger(str:String):String={str} } val str=kong1.logger("kong1") println(str) }}
特质构造顺序特质也可以有构造器,由字段的初始化和其他特征体中的语句构成。这些语句在任何混入该特质的对象在构造是都会被执行。构造器的执行顺序:调用超类的构造器;特质构造器在超类构造器之后、类构造器之前执行;特质由左到右被构造;每个特质当中,父特质先被构造;如果多个特质共有一个父特质,父特质不会被重复构造所有特质被构造完毕,子类被构造。
scala特质
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。