千家信息网

Scala的Trait怎么使用

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"Scala的Trait怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Scala的Trait怎么使用"吧!Trait概述:1.Sc
千家信息网最后更新 2025年12月03日Scala的Trait怎么使用

本篇内容主要讲解"Scala的Trait怎么使用",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Scala的Trait怎么使用"吧!

Trait概述:

1.Scala中Trait 为重用代码的一个基本单位,首先Trait可以作为接口使用,这时候Trait跟Java的接口Interface类类似,另外Trait还可以定义抽象方法,这里又跟Java的抽象类的抽象方法一样。

2.类可以作为使用extrends关键字集成Trait,这里与java的implement不一致,scala中没有implement关键字,不管是继承类还是继承自Trait都是extrends。

3.类继承Trait后,必须实现其中的抽象方法,但不需要使用override关键字,同时Scala同Java一样,不支持类多继承,但支持多重继承Trait,使用with关键字即可。

Ttrait作为接口使用:

代码实例:

定义一个Student类分别继承Trait StudentInfo和MakeFrends

package com.hadoop.ljs.spark.study.TraitTest
/** * @author: Created By lujisen * @company ChinaUnicom Software JiNan * @date: 2020-02-12 20:05 * @version: v1.0 * @description: com.hadoop.ljs.spark.study.`trait` */
trait StudentInfo{ def printName(name:String)}trait MakeFrends{ def makeFriend(student: Student)}class Student(name:String) extends StudentInfo with MakeFrends {
var myName=name def printName(name2:String): Unit= { println("hello "+name2+", my name is "+myName) } def makeFriend(s: Student): Unit ={ println("i am "+myName+" ,i want to make friends with you "+s.myName) }}

主函数测试类StudentTraitTest:

package com.hadoop.ljs.spark.study.TraitTest/**  * @author: Created By lujisen  * @company ChinaUnicom Software JiNan  * @date: 2020-02-12 20:14  * @version: v1.0  * @description: com.hadoop.ljs.spark.study.`trait`  */object StudentTraitTest {  def main(args: Array[String]): Unit = {    val student1=new Student("ljs1")    val student2=new Student("ljs2")        student1.printName("ljs3")    student1.makeFriend(student2)  }}

Trait定义具体方法实现:

Trait不仅可以作为接口定义抽象方法,还可以定义具体方法

代码实例:

定义一个Student2类继承Trait StudentInfo2

package com.hadoop.ljs.spark.study.TraitTest/**  * @author: Created By lujisen  * @company ChinaUnicom Software JiNan  * @date: 2020-02-12 20:31  * @version: v1.0  * @description: com.hadoop.ljs.spark.study.TraitTest  */trait StudentInfo2{  def printName(name:String): Unit ={    println("I am trait  StudentInfo ,my name is:"+name)  }}class Student2() extends StudentInfo2{  def printName2(name: String): Unit ={    printName(name)    println("I am class Student2,my name is:"+name)  }}

主函数测试类Student2TraitTest:

package com.hadoop.ljs.spark.study.TraitTest/**  * @author: Created By lujisen  * @company ChinaUnicom Software JiNan  * @date: 2020-02-12 20:34  * @version: v1.0  * @description: com.hadoop.ljs.spark.study.TraitTest  */object Student2TraitTest {  def main(args: Array[String]): Unit = {    val student3=new Student2()    student3.printName("ljs3")  }}

Trait中定义抽象字段

Trait中可以定义抽象字段,且Trait中具体方法,可以使用定义的抽象字段,但是Trait的继承类,必须要覆盖该字段,指定具体的值

代码实例:

定义Trait StudentInfo3含有抽象字段score,Class Student3继承它,必须要给抽象字段赋值,不然报错。

package com.hadoop.ljs.spark.study.TraitTest/**  * @author: Created By lujisen  * @company ChinaUnicom Software JiNan  * @date: 2020-02-12 20:45  * @version: v1.0  * @description: com.hadoop.ljs.spark.study.TraitTest  */trait StudentInfo3{  val score:String  def printScore(): Unit ={    println("printScore :"+score)  }}class Student3 extends StudentInfo3{  overrideval score: String = "ljs5"  def printScore2(): Unit ={    println("printScore2 :"+score)  }}

主函数测试类Student3TraitTest

package com.hadoop.ljs.spark.study.TraitTest/**  * @author: Created By lujisen  * @company ChinaUnicom Software JiNan  * @date: 2020-02-12 20:51  * @version: v1.0  * @description: com.hadoop.ljs.spark.study.TraitTest  */object Student3TraitTest {  def main(args: Array[String]): Unit = {    val student=new Student3()    student.printScore()    student.printScore2()  }}

到此,相信大家对"Scala的Trait怎么使用"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

方法 字段 代码 关键 关键字 接口 函数 实例 测试 内容 学习 支持 实用 更深 一致 兴趣 单位 同时 实用性 实际 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 发生重大网络安全事件的责任 奥比网络技术 数据库的基本操作之法 申请建筑软件开发博士 db2数据库主键自增长 国内有哪些数据库技术 安卓软件开发教程jawa 多用户网上商店软件开发 订做服务器机箱哪里有 全面提升网络安全意识和维护水平 物联网网络安全的忧虑 泗洪威力网络技术市场 中策计算机网络技术是什么 怎么给mdb数据库加密 数据库还原一直提示被占用 安装新中大数据库装不上 医院网络安全整体情况报告 信承诺互联网科技有限公司 网络技术牛逼的高职院校 包河区全过程网络技术咨询怎么样 dell服务器光盘启动 网络安全中容灾内容分类 比特梵德网络安全套装 国外主要全文数据库的特点 连接数据库驱动类异常 ice服务器真的很贵吗 服务器插笔记本电脑拷贝文件 负责建立数据库连接的 常州智能化软件开发价格 数据库职工姓名不能为空字符
0