• 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的更多相关文章

  1. 大数据系列修炼-Scala课程01

    简介 由于本人刚毕业,也是从事软件开发相关的工作.想再学习一下关于大数据.移动互联网.云计算相关的技术.为我的未来打好基础.并且从零开始学习大数据相关的知识,脚踏实地的走好每一步,听行业前辈说毕业生刚 ...

  2. 大数据系列修炼-Scala课程03

    前言 今天上班看了很多关于前端js,jQuery.bootstrap.js以及springMVC看得迷迷糊糊的,毕竟以前很少去学习前端的技术,所有看得有点困,还好看得比较多,回家后也开始学习关于Sca ...

  3. 大数据系列修炼-Scala课程07

    由于昨天下班后有点困,就没有来及写博客,今天会把它补上!把这个习惯坚持下去! 关于Scala高阶函数详解 1.Scala高阶函数代码实现:高阶函数就是在我们函数中套用函数 2.高阶函数代码详解:高阶函 ...

  4. 大数据系列修炼-Scala课程06

    关于Scala中的正则表达式与模式匹配结合的正则表达式Reg 正则表达式的实现:正则表达式的定义与其它语言差不多,只需在表达式后加一个.r,并且可以遍历相应的表达式进行匹配 //定义的正则表达式 va ...

  5. 大数据系列修炼-Scala课程04

    Scala中继承实现:超类的构造.字段重写.方法重写 关于超类的构建:超类可以在子类没有位置的限制,可以在子类中调用父类的方法 类中字段重写:在重写字段前面加一个override就可以重新赋值 类中方 ...

  6. 大数据系列修炼-Scala课程08

    接下来会讲解关于各种模式匹配,从中就会知道模式匹配的重要性 关于Type.Array.List.Tuple模式解析 1.Type模式匹配代码解析 //关于Type类型的模式匹配 //匹配 Int类型. ...

  7. 大数据系列修炼-Scala课程02

    Scala数组操作实战详解 接着昨天的课程,下面我们继续学习关于Scala数组操作详解.Scala数组的定义 //数组定义 //定长数组格式 /** * val arrayName = new Arr ...

  8. 大数据系列修炼-Scala课程11

    接着昨天的list,也是学习集合的相关知识 ListBuffer.ArrayBuffer.Queue.stack相关操作 1.ListBuffer.ArrayBuffer代码实现:ListBuffer ...

  9. 大数据系列修炼-Scala课程10

    今天主要是关于Scala中对List的相关操作,list在Scala中应该是至关重要,接下来会讲解关于List的一系列操作 List的map.flatMap.foreach.filter操作讲解 1. ...

随机推荐

  1. Word Ladder

    Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest t ...

  2. Asp.Net获取IP的方法

    服务端: //方法一 HttpContext.Current.Request.UserHostAddress; //方法二 HttpContext.Current.Request.ServerVari ...

  3. github basic usage in windows

    1. create a new accout, create orginazation, create repo 2. install git in your local pc Note: you c ...

  4. PHP 5.4.8 添加系统服务命令

    之前没注意,PHP 5.4.8 的安装包有自带的系统服务注册文件的 打开编译安装包,换成你自己的路径 cd /mydata/soft/php-5.4.8/ cp sapi/fpm/init.d.php ...

  5. 如何修改nexus的端口号

    1. Maven仓库:放置所有JAR文件(WAR,ZIP,POM等等)的地方,所有Maven项目可以从同一个Maven仓库中获取自己所需要的依赖JAR,这节省了磁盘资源. 简言之,Maven仓库能帮助 ...

  6. Beta Scrum Day 3

    听说

  7. mybatis insert 返回主键

    分享牛,分享牛原创.ssm整合的时候,我们操作mybatis insert 的时候,需要返回插入的主键,因为主键是自增的,这个时候怎么办呢?很简单看一下下面的代码示例: 1.1.1. 代码定义 pub ...

  8. Android之友盟多渠道打包与数据统计

    文章大纲 一.多渠道打包与数据统计介绍二.友盟实现多渠道打包实战三.友盟数据统计实战四.项目源码下载五.参考文章   一.多渠道打包与数据统计介绍   多渠道打包,相信很多同学都知道.在Android ...

  9. 菜鸟安卓学习路——更强大的滚动控件--RecycleView

  10. PVS桌面主镜像配置后,实际用户登录,配置未生效

    1.打开系统属性——高级——用户配置文件下的[设置] 2.打开用户配置文件,可以看到[复制]项灰化 3.使用windwows enable 工具启动上述灰化项,运行附件的exe文件后,任务栏出现下图标 ...