抽象类和接口的合体trait 1

/*
*  1、trait不可以传参
*  2、类继承多个trait的时候  第一个关键字用extends 第二个用with
* */
trait Read{def read(name:String): Unit ={println(s"$name is reading... ")}
}
trait Listen{def listen(name:String): Unit ={println(s"$name is listen... ")}
}
class Human() extends Read with Listen {}object Test_Trait {def main(args: Array[String]): Unit = {val human = new Human()human.read("alalla")human.listen("lalal")}
}

抽象类和接口的合体trait 2


/*
*  trait类似于抽象类 可以有方法的实现 也可以只有方法的声明 子类去实现就好了
* */
trait PointEau{def isEqu(o:Any):Booleandef isNotEqu(o:Any):Boolean = !isEqu(o)
}
class Point(xx:Int,xy:Int) extends PointEau {val x=xxval y=xyoverride def isEqu(o: Any): Boolean = {//需要是一个点 并且x值相等o.isInstanceOf[Point] && o.asInstanceOf[Point].x==this.x}
}object Test_Trait {def main(args: Array[String]): Unit = {val point1 = new Point(1, 2)val point2 = new Point(1, 4)println(point1.isEqu(point2))}
}

模式匹配Match

package com.yxx/*
*   Match 模式匹配
*   1、case_ 匹配任何 放到最后
*   2、match即可以匹配类型 又可以匹配值
*   3、匹配过程有隐式类型的转换
*   4、从上往下匹配,匹配上了之后会自动终止
*   5、模式匹配外面的{}可以省略
* */object Test_Natch {def main(args: Array[String]): Unit = {val tp=(1,1.2,"abc",'a',true)val iterator = tp.productIteratoriterator.foreach(matchFun)}def matchFun(o:Any): Unit ={o match{case 1=>{println("这个是1")}case i:Double=>{println(s"这个是double 值是$i")}case s:String=>{println(s"这个是String 值是$s")}case _=>{println("No Match...")}}}
}

样例类case class

 /** 使用case关键字定义的类就是样例类 他是特殊的类* 实现了构造函数的getter方法(因为参数默认是val的) 当参数是var的时候 还会实现参数的setter方法* 样例类是默认实现了toString equals  copy和hashCode方法的* 样例类可以new也可以不new* 只有构造函数的样例类 在声明的时候可以不加花括号* */case class A(name:String,age:Int){}def main(args: Array[String]): Unit = {val a1 = A("a", 1)val a2 = A("a", 1)println(a1.equals(a2))println(a1.toString)}

偏函数


/*
* 偏函数PartialFunction[A,B] 一进一出
* */
object Test_PartialFunction {def testPartialFunction:PartialFunction[String,Int]={case "a"=>1case "b"=>10case _=>1000000}def main(args: Array[String]): Unit = {println(testPartialFunction("aa"))}
}

【Scala】9、Trait、Match、CaseClass和偏函数相关推荐

  1. Scala特质trait

    Scala特质 章节目标 能够使用trait独立完成适配器, 模板方法, 职责链设计模式 能够独立叙述trait的构造机制 能够了解trait继承class的写法 能够独立完成程序员案例 1. 特质入 ...

  2. Scala:try match

    Scala:try & match try表达式 match 表达式 try表达式 try表达式的语意与java中try-catch-finally是一样的. 但是try在scala中不是一个 ...

  3. scala中的match详解

    Scala中提供了比java,c更加强大的switch语句--match,而且不用担心因为忘记写break语句而发生case穿透 1.更好的switch 与if,类似match也是表达式,如下一个用于 ...

  4. Scala特质trait具备Java中类和接口的功能

    特质trait具备Java中类和接口的功能

  5. Scala中的match(模式匹配)

    2019独角兽企业重金招聘Python工程师标准>>> /** 模式匹配 */ case class Class1(param1: String, param2: String) c ...

  6. scala中的match

    match的细节和注意事项: 1)如果所有case都不匹配,那么会执行case_分支,类似于Java中的default语句 2)如果所有case都不匹配,又没有写case_分支,那么会抛出MatchE ...

  7. 【Scala】Scala的偏函数和偏应用函数

    偏函数(Partial Function),是一个数学概念它不是"函数"的一种, 它跟函数是平行的概念. Scala中的Partia Function是一个Trait,其的类型为P ...

  8. Spark基础-scala学习(三、Trait)

    面向对象编程之Trait trait基础知识 将trait作为接口使用 在trait中定义具体方法 在trait中定义具体字段 在trait中定义抽象字段 trait高级知识 为实例对象混入trait ...

  9. Scala的特质(Trait)介绍

    Scala的特质(Trait) 基本概念 特质声明 基本语法 特质的使用 基本语法 说明 案例实操 特质叠加 基本概念 案例实操 特质叠加执行顺序 案例说明 特质自身类型 说明 案例实操 特质和抽象类 ...

最新文章

  1. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
  2. Ubuntu12.10编译openwrt遇到的错误
  3. ‘Series‘ object has no attribute ‘sort‘
  4. Learning to Rank 中Listwise关于ListNet算法讲解及实现
  5. Python注释缩进不得当导致IndentationError: unexpected indent
  6. 息系统项目管理师知识点:区块链
  7. asp.net 开发知识小结【转】
  8. 高中会考access数据库_Access操作会考复习.doc
  9. 古谚、评论与论断、名篇与名言
  10. 视觉三维重建中的关键技术及代码实现视频分享
  11. compiled python file_YouCompleteMe安装的问题requires Vim compiled with Python (2.6+ or 3.3+) support...
  12. 2005。1。22,闹洞房安排。
  13. burpsuite配置证书抓取htpps
  14. FPGA-超声波避障小车(ego1)
  15. android 相机 app,android – Emulator的相机内置app buggy在Froyo / 2.2?
  16. 公司项目QuickSDK登陆以及支付总结
  17. 静态页面复习--用semantic UI仿写豆瓣主页
  18. 浪潮服务器性能参数,浪潮高密度服务器i24
  19. MacOS安装Homebrew与Oh-My-Zsh
  20. iOS 有效编写高质量Objective-C方法(一)

热门文章

  1. 自然语言处理(1)——绪论与概述
  2. Mybaits-Plus Invalid bound statement (not found) 问题
  3. 电信物联网平台SOTA升级(软件升级)的全流程说明
  4. 甘恒通:腾讯信鸽海量移动推送服务构建
  5. 金蝶K3 WISE BOM多级展开_BOM成本表
  6. 双系统不显示系统选择界面
  7. linux git rabit,Linux 安装 RabbitMQ
  8. 运行java程序需要的工具软件的目录,运行Java程序需要的工具软件所在的目录是A.JDK的bin目录B.JDK的demo目录C.JDK的lib目录D.JDKR的j...
  9. 电视盒子最新android,安卓盒子已倒下!4款Win10电视盒子推荐
  10. 项目管理知识点-结合Enovia项目管理模块