1. 概念理解
    Scala Trait(特质) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不 同的是,它还可以定义属性和方法的实现。
    一般情况下 Scala 的类可以继承多个 Trait,从结果来看就是实现了多重继承。第 一个关键字使用 extends,之后使用 with。
    Trait(特质) 定义的方式与类类似,但它使用的关键字是 trait。
  2. 举例:trait 中带属性带方法实现
    注意:继承的多个 trait 中如果有同名的方法和属性,必须要在类中使用 “override”重新定义。trait 中不可以传参数
package com.neu/*** @Author yqq* @Date 2021/12/06 15:24* @Version 1.0*/trait Look{//相当于java中的抽象类,但是没有抽象方法val lookAt="book"val name="张三"def look(str:String):Unit={println(name+s"Look的Trait的look方法:${str}")}
}trait Read{val readType="read"val name="李四"def read(str:String):Unit={println(s"${str}read中的read函数")}
}class Person1 extends Look with Read{ //多继承override val name = "科比"
}
object TestTrait {def main(args: Array[String]): Unit = {val person = new Person1println(person.name)println(person.read("看Java编程"))println(person.look("看python"))}}
  1. 举例:trait 中带方法不实现
package com.neu/*** @Author yqq* @Date 2021/12/06 15:49* @Version 1.0*/
//判断对象相同
trait Equal{//声明一个抽象函数def isEqual(other:Any):Booleandef isNotEqual(other:Any):Boolean={!isEqual(other)}
}class Point(x:Int,y:Int) extends Equal{var a:Int=xvar b:Int=y//other必须是Point类型,坐标必须相同override def isEqual(other: Any): Boolean = {//asInstanceOf是强制类型转换other.isInstanceOf[Point] && other.asInstanceOf[Point].a==this.a && other.asInstanceOf[Point].b==this.b}
}
object TestTraits {def main(args: Array[String]): Unit = {val point = new Point(1,2)val point1 = new Point(1,2)println(point.isEqual(point1))println(point.isNotEqual(point1))}}

Trait 特质特性相关推荐

  1. Scala中的trait特质

    Trait字面意思就是特质或者特征,这个词翻译成特征比较合适.它的意义和Java,c#中的接口很类似.但是trait支持部分实现,也就是说可以在scala的trait中实现部分方法. 在下面的例子中定 ...

  2. PHP中trait的特性

    转载链接:https://www.jb51.net/article/105579.htm 1.trait简介 1.1 特性 (1)优先级:当前类中的方法 > trait中的方法 > 基类中 ...

  3. scala 基础十一 scala 中的trait特质

    1.Scala类型系统的基础部分是与Java非常相像的.Scala与Java一样有单一的根类,Java通过接口来实现多重继承,而Scala则通过特征(trait)来实现(Scala的特征可以包含实现代 ...

  4. 2021-03-19~20 大数据课程笔记 day58day59

    @R星校长 1 Scala 1.1 [重点]Scala六大特性  1) 与java无缝整合  2) 类型自动推断  3) 并发和分布式  4) Trait特质特性  5) Match模式匹配  6) ...

  5. Scala特证/特质【6.7 特质(Trait)】

    Scala特证/特质[6.7 特质(Trait)] 6.7 特质(Trait) Java 的接口 接口的作用 抽象类的作用 6.7.1 特质声明 6.7.2 特质基本语法 6.7.3 特质叠加 6.7 ...

  6. Scala的特质(Trait)介绍

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

  7. [scala-spark]6. 继承与特质trait

    1. 继承 定义抽象类 abstract class Element{def contents:Array[String] } 抽象类的方法没有实现,抽象类的类本身必须被abstract修饰.而方法只 ...

  8. 28.特性trait.rs

    /* 特性(trait)概念接近于 Java 中的接口(Interface),但两者不完全相同.特性与接口相同的地方在于它们都是一种行为规范,可以用于标识哪些类有哪些方法 trait Descript ...

  9. scala基础之特质trait

    Scala中,trait相当于Java中的接口,遇到需要使用Java接口的场景时,你就在Scala中可以使用trait了. 我们知道Java中你可以实现多个接口,那么Scala中,你也可以继承多个tr ...

最新文章

  1. oracle java rmi 漏洞,Oracle Java SE Java运行时环境RMI子组件远程漏洞(CVE-2011-3556)
  2. 深入Java虚拟机之虚拟机体系结构
  3. 李开复:谈谈那些你不知道的人工智能!
  4. 中英文怎么算 字符长度_如何将混合了中英文及不同数量空格的文本,快速拆分成多列...
  5. 【算法】 - 滑动窗口
  6. x:Name与Name区别
  7. Node.js初探之hello world
  8. pip install win32api报错解决方法
  9. c++获得cpu厂商_使用Visual C++编程取得CPU信息
  10. python调用woff_修改Python脚本以批量转换目录中的所有“WOFF”文件
  11. 创客教育的起源和内涵的基本理念
  12. jdk下载,安装与卸载,删除注册表
  13. 在网站中使用一些字体是否会构成侵权?
  14. addActionListener
  15. 硬件知识:固态硬盘4K对齐知识介绍
  16. [34期] [原创]项目感受|总结|献给怀揣着梦想来到兄弟连学习的兄弟姐妹们
  17. 【以太网数据包】OICQ数据包(QQ)
  18. 讲讲机器视觉引导类有关应用总结(包括标定)
  19. 关于android里面Shape属性的使用
  20. 访问学者初到加拿大需要怎么做?

热门文章

  1. 中兴B863AV3.2-M_S905L_支持3A和3A-B_安卓9.0_一次线刷_刷机固件升级包及教程
  2. 使用360电脑门诊软件修复Netbeans图标显示异常
  3. “定量宽松”货币政策出炉,黄金走向何方?
  4. 机器学习之决策树算法(3)
  5. 新手必须学习ABAP内容
  6. 爬虫爬评书吧_爬虫学习:xpath爬取评书网
  7. eclipse查找代码的存放位置,找工作空间
  8. 『R语言Python』针对多分类离散型变量的特征工程
  9. 克拉恋人会员制取证分析
  10. 【论文翻译】(摘要及引言)The Fourier decomposition method for nonlinear and non-stationary time series analysis