Scala编程入门---面向对象编程之Trait
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Scala编程入门---面向对象编程之Trait,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1852字,纯文字阅读大概需要3分钟。
内容图文
Scala中Trait是一种特殊概念
首先我们可以将Triat做为接口来使用,此时的Triat就与java中的接口非常相似
在Triat中可以定义抽象方法,就与抽象类中的抽象方法一样,只要不给出具体的实现即可
类可以使用extend是关键字来继承Triat,注意这里不是Implement,而是extends,在Scala中没有Implement的概念,无论是继承还是Triat都是extends
类继承Triat后,必须实现其中的抽象方法,实现是不需要override关键字
Scala不支持对类进行多继承,但是支持多重继承triat,使用with关键字即可
triat sayHello{ def sayHello(name:String) } triat makeFriends{ def makeFriends(p:Person) } class Person(val name:String) extends sayHello with makeFriends{ def sayHello(otherName:String)= println("hello,"+otherName+",i‘m"+name) def makeFriends(p:Person) = println("Hello"+p.name+",I‘m"+name+"i want to make friend with you ") }
val p = new Person("leo")
val p2 = new Person("jack")
p.sayHello("jack")
p.makeFriends(p2
在Triat中定义具体方法
Scala中的Triat可以不是只定义抽象方法,还可以定义具体方法,此时的Triat更像是包含了通用工具方法的东西
有一个专有名词来形容这种情况,就是说Triat的功能混入了类
举例来说,triat中可以包含一些很多类都通用的功能方法,比如打印日志,sprak中就使用了triat来定义了通用日志打印法
triat Logger{ def log(message:String) = prinl("msg:"message) } class Person(val name:String) extends Logger{ def makeFrinds(p:Person){ println("Hi,i‘m"+name+",i‘m glad to make friends with you ,"+p.name) log("make friends method is invoked with parameter Person[name="+p.name+"]") } }
在Triat中定义具体字段
Scala中Triat可以定义具体field,此时继承triat就自动获取了triat中定义的field
但这种获取field的方式与继承扯拉学说是不同的:如果是继承class获取的field,实际是定义在父类中的。而继承triat获取的field,就直接被添加到类中
triat Person{ val eyeNum =2 } class student(name:String) extends Person{ def sayHello =println("Hi ,i‘m "+name+",I have "+eyeNum+"eyes") }
在triat中定义抽象字段
Scala中Triat可以定义抽象filed,triad中的具体方法可以依据抽象filed来编写
但是继承triat类,侧必须覆盖抽象filed,提供具体值
triat SayHello{ val mes:String def sayHello(name:String) = println(mes+","+name) } class Person(name:String) extends SayHello{ val msg:Stirng = "hello" def makeFriends(p:Person){ sayHello() println("I‘m"+name+", I want to make friends with you !") } }
原文:http://www.cnblogs.com/yeszero/p/6955845.html
内容总结
以上是互联网集市为您收集整理的Scala编程入门---面向对象编程之Trait全部内容,希望文章能够帮你解决Scala编程入门---面向对象编程之Trait所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。