Trait 特质特性
- 概念理解
Scala Trait(特质) 相当于 Java 的接口,实际上它比接口还功能强大。与接口不 同的是,它还可以定义属性和方法的实现。
一般情况下 Scala 的类可以继承多个 Trait,从结果来看就是实现了多重继承。第 一个关键字使用 extends,之后使用 with。
Trait(特质) 定义的方式与类类似,但它使用的关键字是 trait。 - 举例: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"))}}
- 举例: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 特质特性相关推荐
- Scala中的trait特质
Trait字面意思就是特质或者特征,这个词翻译成特征比较合适.它的意义和Java,c#中的接口很类似.但是trait支持部分实现,也就是说可以在scala的trait中实现部分方法. 在下面的例子中定 ...
- PHP中trait的特性
转载链接:https://www.jb51.net/article/105579.htm 1.trait简介 1.1 特性 (1)优先级:当前类中的方法 > trait中的方法 > 基类中 ...
- scala 基础十一 scala 中的trait特质
1.Scala类型系统的基础部分是与Java非常相像的.Scala与Java一样有单一的根类,Java通过接口来实现多重继承,而Scala则通过特征(trait)来实现(Scala的特征可以包含实现代 ...
- 2021-03-19~20 大数据课程笔记 day58day59
@R星校长 1 Scala 1.1 [重点]Scala六大特性 1) 与java无缝整合 2) 类型自动推断 3) 并发和分布式 4) Trait特质特性 5) Match模式匹配 6) ...
- Scala特证/特质【6.7 特质(Trait)】
Scala特证/特质[6.7 特质(Trait)] 6.7 特质(Trait) Java 的接口 接口的作用 抽象类的作用 6.7.1 特质声明 6.7.2 特质基本语法 6.7.3 特质叠加 6.7 ...
- Scala的特质(Trait)介绍
Scala的特质(Trait) 基本概念 特质声明 基本语法 特质的使用 基本语法 说明 案例实操 特质叠加 基本概念 案例实操 特质叠加执行顺序 案例说明 特质自身类型 说明 案例实操 特质和抽象类 ...
- [scala-spark]6. 继承与特质trait
1. 继承 定义抽象类 abstract class Element{def contents:Array[String] } 抽象类的方法没有实现,抽象类的类本身必须被abstract修饰.而方法只 ...
- 28.特性trait.rs
/* 特性(trait)概念接近于 Java 中的接口(Interface),但两者不完全相同.特性与接口相同的地方在于它们都是一种行为规范,可以用于标识哪些类有哪些方法 trait Descript ...
- scala基础之特质trait
Scala中,trait相当于Java中的接口,遇到需要使用Java接口的场景时,你就在Scala中可以使用trait了. 我们知道Java中你可以实现多个接口,那么Scala中,你也可以继承多个tr ...
最新文章
- oracle java rmi 漏洞,Oracle Java SE Java运行时环境RMI子组件远程漏洞(CVE-2011-3556)
- 深入Java虚拟机之虚拟机体系结构
- 李开复:谈谈那些你不知道的人工智能!
- 中英文怎么算 字符长度_如何将混合了中英文及不同数量空格的文本,快速拆分成多列...
- 【算法】 - 滑动窗口
- x:Name与Name区别
- Node.js初探之hello world
- pip install win32api报错解决方法
- c++获得cpu厂商_使用Visual C++编程取得CPU信息
- python调用woff_修改Python脚本以批量转换目录中的所有“WOFF”文件
- 创客教育的起源和内涵的基本理念
- jdk下载,安装与卸载,删除注册表
- 在网站中使用一些字体是否会构成侵权?
- addActionListener
- 硬件知识:固态硬盘4K对齐知识介绍
- [34期] [原创]项目感受|总结|献给怀揣着梦想来到兄弟连学习的兄弟姐妹们
- 【以太网数据包】OICQ数据包(QQ)
- 讲讲机器视觉引导类有关应用总结(包括标定)
- 关于android里面Shape属性的使用
- 访问学者初到加拿大需要怎么做?
热门文章
- 中兴B863AV3.2-M_S905L_支持3A和3A-B_安卓9.0_一次线刷_刷机固件升级包及教程
- 使用360电脑门诊软件修复Netbeans图标显示异常
- “定量宽松”货币政策出炉,黄金走向何方?
- 机器学习之决策树算法(3)
- 新手必须学习ABAP内容
- 爬虫爬评书吧_爬虫学习:xpath爬取评书网
- eclipse查找代码的存放位置,找工作空间
- 『R语言Python』针对多分类离散型变量的特征工程
- 克拉恋人会员制取证分析
- 【论文翻译】(摘要及引言)The Fourier decomposition method for nonlinear and non-stationary time series analysis