Scala入门到精通——第十一节 Trait进阶

  • 时间:
  • 浏览:1
  • 来源:神彩IOS下载_彩神IOS下载官方

自身类型的趋于稳定大约让当前类变得“抽象”了,它假设当前对象(this)也符合指定的类型,可能性自身类型 this:X =>的趋于稳定,当前类构造实例需要要一并满足X类型,下面给出自身类型的使用代码:

通过前一小节,能还可不能不能 了看后,trait有我本人的构造器,它是无参构造器,还可不能不能 了定义trait带参数的构造器,即:

当UnprintedException扩展的类或混入的特质具有相同的父类时,scala会自动地消除冲突,类似于:

2 lazy懒加载的办法

上述代码在编译时不要有问题 ,但实际执行以后抛异常,异常如下:

除此之外 ,trait与普通的scala类并这么 其它区别,在前一讲中亲戚朋友 提到,trait中能还可不能不能 了有具体的、抽象的字段,不还可不能不能 还可不能不能 了有具体的、抽象的办法 ,即使trait中这么 抽象的办法 也是合理的,如:

下面的代码演示了哪此是self type即自身类型

可能性此时定义了1个 类混入了ExceptionLogger ,则Exception自动地成为這個 类的超类,代码如下:

原本的设计会趋于稳定1个 问题 ,确实子类能还可不能不能 了对fileName抽象成员变量进行重写,编译不还可不能不能 通过,但实际执行以后出空指针异常,完全代码如下:

加上公众微信号,能还可不能不能 了了解更多最新Spark、Scala相关技术资讯

lazy办法 定义fileOutput还可不能不能 了当真正被使用时才被初始化,例子中,当调用 s.log(“predifined variable “)时,fileOutput才被初始化,此时fileName可能性被赋值了。

具体原因而是我构造器的执行顺序问题 ,

在前一讲当中亲戚朋友 提到,对于不趋于稳定具体实现及字段的trait,它最终生成的字节码文件反编译后是等同于java中的接口,而对于趋于稳定具体实现及字段的trait,其字节码文件反编译后得到的java中的抽象类,它有着scala语言我本人的实现办法 。以后,对于trait它就有我本人的构造器,trait的构造器由字段的初始化和其它trait体中的一段话构成,下面是其代码演示:

而下面的代码则定义了自身类型self type,它就有前面别名的用途,

在本节的第2小节要素,亲戚朋友 给出了trait与类之间的区别,亲戚朋友 现在明白,trait除了不具有带参数的构造函数之外,与普通类这么 任何区别,这原因trait不还可不能不能 还可不能不能 了扩展其它类

下面给出了实物类中使用场景

显然,這個 办法 编写的代码很不优雅,也比较难理解。此时能还可不能不能 了通过在第一讲中提到的lazy即懒加载的办法

前面的FileLogger中的文件名被写死为”file.log”,线程池池池不具有通用性,这边对前面的FileLogger进行改造,把文件名写成参数形式,代码如下:

有几种办法 能还可不能不能 了处理前面的问题 :

1 提前定义

提前定义是趋于稳定常规构造以后将变量初始化,完全代码如下:

通过上述好难发现,在创建匿名类对象时,先调用的是Logger类的构造器,以后调用的是FileLogger的构造器。实际上构造器是按以下顺序执行的:

1. 可能性有超类,则先调用超类的构造器

2. 可能性有父trait,它会按照继承层次先调用父trait的构造器

2. 可能性有多个父trait,则按顺序从左到右执行

3. 所有父类构造器和父trait被构造完以后,才会构造本类

猜你喜欢

2019年高级Java程序员面试题汇总

zookeeper是哪此?zookeeper全部都是哪此功能?zookeeper有哪此部署法子 ?zookeeper使用哪此协议?zookeeper的通知机制是怎样才能的?z

2020-01-24

我和男朋友在一起差不多二个月,他现在说对我没感觉,我真不知道怎么办,我很爱他!

追问追答本回答由提问者推荐通常说男女之间有有有另四个保鲜期,这名时间通常不超过120天。要是同居120天后,对对方仍然感到痴迷,那才是真爱。他连保鲜期就只坚持了一半。余下的一生

2020-01-24

为什么我男朋友以前很爱我,现在反而对我越来越冷淡了,开始一有空就去上网,以前都主动给我打电话,现在

应该是厌倦了吧,老婆一般在对你冷淡的之后,说明因为不爱你了。你对你你这一回答的评价是?为你推荐:下载百度知道APP,抢鲜体验可选中这样 或多个下面的关键词,搜索相关资料。也可

2020-01-24

好难过,前天给男朋友发了一条短信,跟他说我们分手吧,他到今天也没回我,我打电话问他,他说好,我好难

可选中另另另六个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个什么的问题。既然不爱从不挽留原先文章出轨马伊琍说过一段话:我不懂哪些地方叫挽留,我只知道,爱我的

2020-01-24

在Ubuntu环境部署Apache Spark集群

1)安装MongoDB3.0.4版 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/a

2020-01-23