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特质的更多相关文章
- Scala 特质全面解析
要点如下: Scala中类只能继承一个超类, 可以扩展任意数量的特质 特质可以要求实现它们的类具备特定的字段, 方法和超类 与Java接口不同, Scala特质可以提供方法和字段的实现 当将多个特质叠 ...
- scala akka 修炼之路5(scala特质应用场景分析)
scala中特质定义:包括一些字段,行为(方法/函数/动作)和一些未实现的功能接口的集合,能够方便的实现扩展或混入到已有类或抽象类中. scala中特质(trait)是一个非常实用的特性,在程序设计中 ...
- 8.scala:特质
版权申明:转载请注明出处.文章来源:http://bigdataer.net/?p=317 总体来说,scala中的特质类似于Java中的接口,但是有别于接口的是特质中既可以有实现方法也可以有抽象方法 ...
- scala 特质的应用
一.为类提供可以堆叠的改变 package com.jason.qianfeng trait Loggertest { def logger(msg: String) } trait ConsoleL ...
- scala学习笔记——特质
一个类扩展自一个或多个特质,以便使用这些特质提供的服务.特质可能会要求使用它的类支持某个特定的特性.不过和java不同,Scala特质可以给出这些特性的缺省实现. 特质的特性: 类可以实现任意数量的特 ...
- 快学Scala之特质
一个Scala类可以继承多个特质(trait), 特质可能会要求使用它们的类支持某个特定特性, 与Java接口不同, Scala特质可以给出这些特质的缺省实现. 要点如下: Scala中类只能继承一个 ...
- Scala入门2(特质与叠加在一起的特质)
一.介绍 参考http://luchunli.blog.51cto.com/2368057/1705025 我们知道,如果几个类有某些共通的方法或者字段,那么从它们多重继承时,就会出现麻烦.所以Jav ...
- 快学Scala习题解答—第十章 特质
10 特质 10.1 java.awt.Rectangle类有两个非常实用的方法translate和grow,但可惜的是像java.awt.geom.Ellipse2D这种类没有. 在Scala中,你 ...
- Scala学习十——特质
一.本章要点 类可以实现任意数量的特质 特质可以要求实现它们的类具备特定的字段,方法或超类 和Java接口不同,Scala特质可以提供方法和字段实现 当你将多个特质叠加在一起时,顺序很重要——其方法先 ...
随机推荐
- 8款实用Sublime text 3插件推荐
Sublime Text作为一个尽为人知的代码编辑器,其优点不用赘述.界面整洁美观.文本功能强大,且运行速度极快,非常适合编写代码,写文章做笔记.Sublime Text还支持Mac.Windows和 ...
- [BS-00] const限定常量或者变量(初次赋值后),其值不允许被改变
CONST(C中的CONST) const是一个C语言(ANSI C)的关键字,它限定一个变量不允许被改变,产生静态作用.使用const在一定程度上可以提高程序的安全性和可靠性.另外,在观看别人代码的 ...
- Winforms-GePlugin-Control-library
Winforms-GePlugin-Control-library http://download.csdn.net/download/xm379303813/4247029
- iOS网络协议 HTTP/TCP/IP浅析
一.TCP/IP协议 话说两台电脑要通讯就必须遵守共同的规则,就好比两个人要沟通就必须使用共同的语言一样.一个只懂英语的人,和一个只懂中文的人由于没有共同的语言(规则)就没办法沟通.两台电 ...
- iOS 蓝牙开发之传输图片
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- 关于django post表单
CSRF verification failed. Request aborted. 默认会出现该状况,解决办法: 1. 使用requestcontext from django.template i ...
- Tomcat Nginx cluster note
nginx install 需要先装pcre, zlib,前者为了重写rewrite,后者为了gzip压缩. 5.安装nginx Nginx 一般有两个版本,分别是稳定版和开发版,您可以根据您的目的来 ...
- 使用Java创建RESTful Web Service
REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移).2000年Roy Fielding博士在他的博士论文“Architectural Sty ...
- Redis认识
摘要:认识Redis 1.安装Redis npm install redis 2.Redis使用 var redis = require("redis"), client = re ...
- Leetcode: Palindrome Pairs
Given a list of unique words, find all pairs of distinct indices (i, j) in the given list, so that t ...