大数据系列修炼-Scala课程05
Scala多重继承、构造器的执行顺序、AOP实现
- 多重继承的trait实现:Scala中接口可以继承具体的类,trait接口可以实现多重继承,并且某个类也可以继承特定的类,在继承后面可以混入,接口的实现
- 多重继承构造器执行顺序:多重继承构造器执行顺序是从左到右按次序执行,如果前面类以及被继承实现了,后面的类就没有必要去实现,父类只需执行一次
object triatScala {
def main(args: Array[String]): Unit = {
val t1 = new PianoTeacher
t1.playPiano
t1.teach
} }
//公共父类
class Human{
println("Human")
}
//继承父类的接口
trait TTeacher extends Human {
println("TTeacher")
def teach
}
//继承父类的接口,并且拥有自己的方法
trait PianoPlayer extends Human {
println("PianoPlayer")
def playPiano = {println("I’m playing piano. ")}
}
//继承父类的类并且混入两个接口实现接口中的方法 实现顺序是按照从左到右
class PianoTeacher extends Human with TTeacher with PianoPlayer {
override def teach = {println("I’m training students. ")}
}
- 基于trait的AOP代码实现:接口被另外一个接口继承并且在实现父类方法的时候也调用父类中抽象方法,在另外一类中是具体实现该公共接口的方法,这样就可以实现AOP(面向切面编程)
//AOP 面向切面编程
trait Action {
def doAction
}
trait TBeforeAfter extends Action {
//使用抽象方法覆盖父类的接口实现中需要制定父类的方法,这个方法在具体的类中实现
abstract override def doAction {
println("Initialization")
super.doAction
println("Destroyed")
}
}
class Work extends Action{
//具体实现父类方法
override def doAction = println("Working...")
} object triatScala {
def main(args: Array[String]): Unit = {
val work = new Work with TBeforeAfter
work.doAction
}
}
包的定义以及包对象、包引用、包的隐式引用实现
- 包定义:Scala中包的定义是可以在一个公共的包下面创建多个包,需要某个包里的类的实例对象,就可以new这个包下面的对象,包也带上
- 包对象实现:包对象里面的方法和属性,在其他的包中可以访问他们
- 包的引用实现:引用某个包中相关类用import后面用{}包括所引用的对象,也可以用java中的包=>用来换用别名,而_表示下面所有包
package com.scala.spark
package object people {
val defaultName = "Scala"
} package people {
class people {
var name = defaultName
}
} import java.awt.{Color,Font}
import java.util.{HashMap=>JavaHashMap}
import scala.{StringBuilder => _}- 包隐式引用实现:Scala中有几个隐式包例如java.lang._,scala._,predef_这三个包,好比java中几个公共包一样,也是拥有很多工具方法。
关于Scala中包、类、对象、成员、伴生类、伴生对象的访问权限
- 包、类、对象、成员的访问权限:private[包名]表示该方法、包、类、对象、成员访问权限扩展到该包下面
- 伴生类、伴生对象访问权限:伴生对象与伴生类可以相互访问
package spark{
package navigation{
//private[spark]表示该类在spark包下有访问权限
private[spark] class Navigator{
//protected[navigation]表示该方法在navigation包下有访问权限
protected[navigation] def useStarChart() {}
class LegOfJourney {
//private[Navigator]表示该常量在navigation包下有访问权限
private[Navigator] val distance =100
}
//private[this]表示该常量在navigation包下有访问权限
private[this] var speed = 200
}
}
package launch{
import navigation._
object Vehicle {
//private[launch]表示该常量在launch该同级的包可以实例化
private[launch] val guide = new Navigator
}
}
}
Scala中文件的读写、控制台输入操作
- 文件的读写实现:文件的读取用source对象中的fromFile方法读取文本中数据也可用fromURL按照url进行读取,而写入用PrintWriter来实现
- 控制台操作实现:Console.readLine来实现控制台操作,console这在Scala的隐式包中,可以直接使用
今天就学到这儿.....
百度视频地址:http://pan.baidu.com/s/1ntzOmDz
大数据系列修炼-Scala课程05的更多相关文章
- 大数据系列修炼-Scala课程01
简介 由于本人刚毕业,也是从事软件开发相关的工作.想再学习一下关于大数据.移动互联网.云计算相关的技术.为我的未来打好基础.并且从零开始学习大数据相关的知识,脚踏实地的走好每一步,听行业前辈说毕业生刚 ...
- 大数据系列修炼-Scala课程03
前言 今天上班看了很多关于前端js,jQuery.bootstrap.js以及springMVC看得迷迷糊糊的,毕竟以前很少去学习前端的技术,所有看得有点困,还好看得比较多,回家后也开始学习关于Sca ...
- 大数据系列修炼-Scala课程07
由于昨天下班后有点困,就没有来及写博客,今天会把它补上!把这个习惯坚持下去! 关于Scala高阶函数详解 1.Scala高阶函数代码实现:高阶函数就是在我们函数中套用函数 2.高阶函数代码详解:高阶函 ...
- 大数据系列修炼-Scala课程06
关于Scala中的正则表达式与模式匹配结合的正则表达式Reg 正则表达式的实现:正则表达式的定义与其它语言差不多,只需在表达式后加一个.r,并且可以遍历相应的表达式进行匹配 //定义的正则表达式 va ...
- 大数据系列修炼-Scala课程04
Scala中继承实现:超类的构造.字段重写.方法重写 关于超类的构建:超类可以在子类没有位置的限制,可以在子类中调用父类的方法 类中字段重写:在重写字段前面加一个override就可以重新赋值 类中方 ...
- 大数据系列修炼-Scala课程08
接下来会讲解关于各种模式匹配,从中就会知道模式匹配的重要性 关于Type.Array.List.Tuple模式解析 1.Type模式匹配代码解析 //关于Type类型的模式匹配 //匹配 Int类型. ...
- 大数据系列修炼-Scala课程02
Scala数组操作实战详解 接着昨天的课程,下面我们继续学习关于Scala数组操作详解.Scala数组的定义 //数组定义 //定长数组格式 /** * val arrayName = new Arr ...
- 大数据系列修炼-Scala课程11
接着昨天的list,也是学习集合的相关知识 ListBuffer.ArrayBuffer.Queue.stack相关操作 1.ListBuffer.ArrayBuffer代码实现:ListBuffer ...
- 大数据系列修炼-Scala课程10
今天主要是关于Scala中对List的相关操作,list在Scala中应该是至关重要,接下来会讲解关于List的一系列操作 List的map.flatMap.foreach.filter操作讲解 1. ...
随机推荐
- 【ThinkingInC++】53、构造函数,析构函数,全局变量
/** * 图书:[ThinkingInC++] * 特征:构造函数,析构函数,全局变量 * 时刻:2014年9一个月17日本18:07:43 * 笔者:cutter_point */ #includ ...
- 顺序容器的insert使用方法
#include <iostream> #include <algorithm> #include <vector> #include <string> ...
- 【BZOJ 1642】 [Usaco2007 Nov]Milking Time 挤奶时间
1642: [Usaco2007 Nov]Milking Time 挤奶时间 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 590 Solved: 3 ...
- Eclipse——热键&Help
版权声明:本文博主原创文章.博客,未经同意不得转载.
- 写一个 docker 打击一系列手册
感谢您的关注,分享也再次给自己一个学习的.机会组织和总结.对未来一段时间内准备一个关于 docker 一系列的实际应用,其中的一些内容此前曾宣布.准备再次修改和整理. 以下是主要的文件夹中的一个: 创 ...
- HDU 1874 畅通公程续 (最短路 水)
Problem Description 某省自从实行了非常多年的畅通project计划后,最终修建了非常多路.只是路多了也不好,每次要从一个城镇到还有一个城镇时,都有很多种道路方案能够选择,而某些方案 ...
- Windows下效率必备软件
AutoHotKey: 神器!神器!神器!当然也得看使用者咯(^__^) 嘻嘻…… Listary: 本地搜索神器,当然还有别的作用,More&More. Launchy : 快速启动安装的应 ...
- Poj3414广泛搜索
<span style="color:#330099;">/* D - D Time Limit:1000MS Memory Limit:65536KB 64bit I ...
- 找出N之内的所有完数
时间限制: 10 Sec 内存限制: 128 MB 提交: 389 解决: 148 [提交][状态][讨论版] 题目描述 一个数如果恰好等于它的因子之和,这个数就称为"完数". ...
- 【原版的】PHP技术成长规划过程中猿人
PHP程序猿的技术成长规划 作者:黑夜路人(2014/10/15) 依照了解的非常多PHP/LNMP程序猿的发展轨迹.结合个人经验体会,抽象出非常多程序猿对未来的迷漫,特别对技术学习的盲目和慌乱.简单 ...