scala -- trait 特性 & 抽象类, 样例类简单了解和代码

AFC自动售检票系统与人工智能AI结合的关键应用方案 针对售检票、大客流管理、设备运维及服务优化提供了可落地的技术支持和实现细节,可作为地铁智慧交通项目的实践参考 阅读详情

Trait

/**
  *1. tarit 作用相当于java中的接口 或者抽象类(java中是单继承)
  * 2. tarit 中有自己的属性 和方法以及实现方法
  * 3. tarit 不可以传参(构造参)
  */
trait TestScalaTrait01 {

  val str = "str"
  val num = 1
  def str(str: String) :Unit = {
    println(this.str + " = "+ str)
  }
  def str1(String: String): String

}
trait TestScalaTrait02 {
  def getNum(a: Int,b: Int) :Int
}

抽象类

/**
  * 抽象类,特点和tarit很相似,不过只能单继承
  */
abstract class TestAbstract1{
  var ss = "121"
  def getValue(str: String)
  def getValue2(mess: String) :String = mess
  def getValue3(): String = ss
}

/**
  * 抽象类中可以带构造参数
  */
abstract class TestAbstract2(str: String,i: Int){
  val mess = str
  val sum = i
  def getMess(): String = mess
  def getSum(): Int = sum
}

继承

/**
  * 继承trait 重写 父类方法 多继承使用with
  * 关键字 都是extends
  * 只能单继承一个类 或者抽象类
  * 同时继承类 和tarit,类应该放在首位
  */
class ClassTestTrait extends TestScalaTrait01 with TestScalaTrait02{
  override def str1(String: String): String = {
     this.str + " =" + String
  }
  override def getNum(a: Int, b: Int): Int = a + b

}
class ClassTestAbstract extends TestAbstract1 with TestScalaTrait02{
  override def getValue(str: String): Unit = ???

  override def getNum(a: Int, b: Int): Int = ???
}

样例类


/**
  * 样例类  关键字 case
  * 1.不带参构造数的样例类 已经过时
  * 2. 构造参数 默认是val 不可变修饰,默认有getter 方法获取属性值
  * 3. 构造参数声明为var 时,默认实现 get  set
  * 4. 样例类默认实现了 tostring, equals, copy ,hashcode 等方法
  * 5. 可以使用new 也可以不适用new
  */
case class Person(var name: String,age: Int){
  
  //  也能有自己的方法
  def testCase() : String = {
    return this.name + " 的年龄为: " + this.age
  }
}

object TestCaseClassObject{
  def main(args: Array[String]): Unit = {
    var p = new Person("xiaoming",12)
    p.name="xiaox"
    println(p.toString)
    println(p.testCase())
//    p.age=11  编译爆红 age是val
  }

 

 

Nacos 从困惑到蒙圈(9)Nacos 适配 达梦数据库【最新版】 介绍Nacos适配达梦数据库的详细步骤,包括对最新版本的支持改造。 阅读详情

相关推荐

VirtualLab初学者教程-1.用户界面

目录前言一、VirtualLab Fusion简介1.软件2.内置工具箱:二、用户界面认识1.上方菜单栏2.右侧面主窗口3.底部窗口附 前言 感觉做VirtualLab的资料不是特别多,可能用的朋友也比较少吧,笔者最近也因为大创需要刚刚开始入门,把网上有的英文资料整理了一下,加了一点自己的内容发出来希望帮助更多在学习中的朋友,有用词不当之处还请多多包涵。 一、VirtualLab Fusion简介 因为是第一讲,简单啰嗦一下软件本身,参考官方介绍。 1.软件 VirtualLab是由德国LightTran

ClaireTang1的博客 2万+

【Rust 基础篇】Rust Trait 对象:灵活抽象与动态分发

Trait 是 Rust 中一组定义方法的抽象。它类似于其他编程语言中的接口或抽象类,但在 Rust 中更为强大和灵活。Trait 定义了一系列方法的签名,但并不提供具体的实现。这使得 Trait 成为一种强大的抽象工具,允许我们在不同类型之间共享相同的行为。Trait 对象是通过虚函数表(VTable)来实现动态分发的。VTable 是一个包含了 Trait 中所有方法的函数指针表,通过它可以在运行时查找和调用相应的方法。在 Rust 中,我们可以通过trait关键字定义一个 Trait。

繁依Fanyi的博客 1018

Matplotlib字体警告终结者:为什么总提示DejaVu Sans?5种场景解决方案大全

本文深入解析Matplotlib中常见的DejaVu Sans字体警告问题,并提供5种典型场景的完整解决方案。从理解字体系统的三层架构和缓存机制,到解决中文显示、远程服务器部署、TeX渲染、缓存优化及生产环境配置等实际问题,帮助开发者彻底摆脱字体警告困扰,实现稳定可靠的数据可视化。

view3的博客 500

scala Trait及其与抽象类的比较

Scala中的Trait是一种可重用代码块,类似于Java中的接口,但具有更多的功能。,可以在类中混入(mix in)Trait的成员,从而使类具有Trait的特点。Trait的语法定义类似于类,但使用关键字"trait"。下面是一个简单的Trait定义示例: 。与Java的接口不同,Trait可以包含字段和构造函数。Trait的一个主要优点是它们可以避免多重继承的问题。在Java中,如果一个类需要继承多个类,就需要使用接口来解决问题。但是,Java的接口只能包含抽象方法,不能包含具体实现,因此在使用多个接

鸭梨的博客 1100

【Python百日进阶-Web开发-Feffery】Day385 -“一起Dash”训练营Lesson-07_利用fac构建表单(上)

文章目录前言:fac是什么?“人生苦短,我用Python;Web开发,首选Feffery!”↓↓↓ 今日笔记 ↓↓↓一、费老师课堂1.1 什么是表单1.2 页面效果1.3 课堂源码二、课后作业2.1 页面效果2.2 项目源码 前言:fac是什么? feffery-antd-components(简称fac),是国内大佬费弗里(Feffery)老师基于著名的React UI组件库ant design进行二次开发,将ant design中的诸多实用组件及特性引入Dash,帮助开发者使用极低的纯Python代

专注于医院数据分析技术与系统开发的创作与分享。 250

游戏服务器框架之跨服(一)

如今的游戏开发,不搞个跨服玩法都不好意思说在做游戏了(当然,也跟游戏类型有关,一些轻度休闲游戏可以排除在外)。跨服玩法的设计,可以进一步激发玩家追求高战力的虚荣心,也可以汇聚玩家数量,避免单服日活跃低呈现死服现象。 几种常见的跨服玩法拓扑结构 一,不同游戏服的玩家进入中立服务器进行战斗,例如跨服天梯类玩法。 游戏服有很多个节点,中心服务器也有很多节点。只要保证对战的双方同时进入同一个中心服游戏进程即可。 二,若干个游戏服组成一个社区,全部服务器包含多个社区,例如世界服玩法。 三,游戏服A玩

littleschemer的博客 5771

Scala中特质trait与抽象类abstract的区别

来源:https://twitter.github.io/scala_school/zh_cn/basics.html 什么时候应该使用特质而不是抽象类?  如果你想定义一个类似接口的类型,你可能会在特质和抽象类之间难以取舍。这两种形式都可以让你定义一个类型的一些行为,并要求继承者定义一些其他行为。一些经验法则: 优先使用特质。一个类扩展多个特质是很方便的,但却只能扩展一个抽象类。

网络空间发展与战略研究 7485

从零开始创建Davinci Configurator配置工程

本文介绍了从零开始搭建达芬奇工程的详细步骤。首先安装Vector的CBD包后,通过DavicCFG.exe新建空白ECU工程。文章提到Postbuild相关概念可参考往期文章《AUTOSAR配置中的PostBuild、Precompile、Linktime》,并预告下期将讲解如何通过导入DBC文件来启用AUTOSAR模块。全文以实操截图为主,步骤清晰简明,适合开发者参考备份。

Xiaowestwind的博客 217

scala 的 trait

Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大。 与接口不同的是,它还可以定义属性和方法的实现。 一般情况下Scala的类只能够继承单一父类,但是如果是 Trait(特征) 的话就可以继承多个,从结果来看就是实现了多重继承。 Trait(特征) 定义的方式与类类似,但它使用的关键字是 trait,如下所示: object TraitDemo { def ...

Java_Road_Far的博客 331

SAP RAP学习系列合集介绍

《SAP RAP学习系列合集:从入门到部署的完整指南》摘要: 本文介绍了作者创建的SAP RAP学习系列合集,涵盖RAP开发从基础概念到实战部署的全流程。系列目前包含17篇文章,系统讲解了RAP核心开发技术:从数据建模、UI构建到行为定义(包括并发控制、草稿功能、授权验证等),最后详细演示了应用部署到Fiori Launchpad的两种方案(OP版和ES版)。

DeveloperMrMeng的博客 1489

ABAP 平台下配置 OAuth 2.0 Authorization Code 授权类型的完整指引

本文是面向ABAP管理员和SAP开发者的OAuth 2.0授权码配置实战指南。文章详细介绍了在ABAP平台启用Authorization Code的完整流程,包括前置条件检查(如TLS配置和系统用户准备)、SOAUTH2事务码中各字段配置要点(授权类型启用、Redirect URI设置、授权码有效期等)、Scope分配规则以及验证方法。通过一个销售订单OData接口的实际案例,说明了如何将抽象规范转化为具体配置。最后提供了多种验证方式(事务码测试、端点测试和Postman测试)以及关键配置参数(如授权码有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 296

SCALA中的抽象类代码样例

package com.hengheng.scala class AbstractClass { } abstract class People { def speak val name : String var age : Int } class Worker extends People { def speak { println...

weixin_33800463的博客 155

大模型系列——一文看懂“提示词” vs “提示词工程” vs “上下文工程”

本文区分了AI领域的三个关键概念:提示词(Prompt)、提示词工程(Prompt Engineering)和上下文工程(Context Engineering)。提示词是直接输入给AI模型的指令文本;提示词工程则是系统化设计、测试和优化提示词的过程;而上下文工程是为AI构建动态上下文,提供恰当信息和工具的科学与艺术。文章通过翻译案例展示了提示词工程的迭代过程,并说明上下文工程在AI Agent中的核心作用——动态收集和组织必要信息。最后强调普通人只需掌握提示词编写,开发AI应用才需深入提示词工程,构建智能

2401_84052244的博客 748

Scala OOP常用知识介绍(类(class) 抽象类(abstract class) 单例对象(object) 特质(trait) 样例类(case class))

Scala OOP1、类定义类成员访问修饰符类的定义2、抽象类3、单例对象(object)4、伴生5、特质(trait)**混入特质(mixin)****动态混入特质**6、内部类7、样例类(case class)8、泛型类9、包与包对象 1、类 定义 (1).类通过class关键字定义 (2).类通过new关键字创建实例 (3).类拥有成员变量和方法 (4).类的成员默认为public,也支持private、protected (5).类中无法定义静态成员变量和方法 (6).类无需明确定义构造方法,通过构

qq_42448606的博客 1097

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

【Scala学习】之TRAITS和抽象类

文章目录SCALA TRAITS AND ABSTRACT CLASSESUsing Scala Traits as InterfacesA simple exampleExtending a traitExtending multiple traitsUSING SCALA TRAITS LIKE ABSTRACT CLASSESA first exampleOverriding an implemented methodMixing in multiple traits that have behavi

有问题的请私信或关注v【技术印记】留言 474

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Scala学习笔记:03-Scala的类与Trait

文章目录Scala类和对象类的声明定义抽象类继承伴生对象trait(特征) Scala类和对象 类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板 Scala中的类不声明为public,一个Scala源文件中可以有多个类。 类的声明定义 Scala中的类不声明为public,一个Scala源文件中可以有多个类。 构造函数在类名以后,括号与类名之间可以使用private和public修饰

903

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

scala trait,class 和 object在内存中的状态

trait trait的变量并不能直接访问,说明不是静态的. trait既能被class继承也能被object继承 每一个继承trait的类生成实例的时候(无论是class还是object)都换先生成一个trait实例(或者说对象) java的属性是static final的,全局唯一。而trait的属性实际上是方法调用而已。 class Son() trait Father { println("i am trait") val son = new Son() var b = new So

齐梦星空 346

Scala核心技术:Trait深度解析——比Java接口更强大的混合体

Trait是Scala中一种特殊的抽象单元,它封装了方法和字段的定义,可以被混入(Mixin)到类中。从某种意义上说,它介于Java接口和抽象类之间。def log(message: String): Unit // 抽象方法这个最简单的Trait定义了一个抽象方法log,任何混入Logger的类都需要实现这个方法。Trait是Scala多范式的缩影——它融合了面向对象的接口概念和函数式的组合思想。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3500

scala——trait

trait 可以理解为一个实现了函数体的接口,或者胖接口每当一个trait被创建时 会生成以接口和一个辅助抽象类。所有的函数实现部分都作为静态函数写在辅助抽象类中。主函数中中所有的调用都会直接调用抽象类中的静态函数实现。代码trait solver{  var value=1;  def answer():Int  def  show() = {println(answer())}  def  s

u012461550的专栏 542

Scala中trait用法详解(一)

入门背景在Scala中,Trait是一种特殊概念。    首先,Trait可以被作为接口来使用,此时Trait与Java的接口比较类似。同时在Trait可以定义抽象方法,其与抽象类中的抽象方法一样,不给出方法的具体实现。 注意:类使用extends继承Trait,,在Scala中,无论继承类还是继承Trait都是用extends关键字。关于的trait的基本概念就不再阐述了。Trait用法 基础知...

今夜无眠 1万+

Scala之trait

1. 将trait作为接口使用 Scala中的Triat是一种特殊的概念,首先我们可以将Trait作为接口来使用,此时的Triat就与Java中的接口非常类似。 在triat中可以定义抽象方法,就与抽象类中的抽象方法一样,只要不给出方法的具体实现即可。 类可以使用extends关键字继承trait,注意,这里不是implement,而是extends,在scala中没有implement的概念

echo_ale的博客 1685

Scala系列:Scala 中 object、class 与 trait 的区别

注意:object 不能提供构造器参数,也就是说 object 必须是无参的在 Scala 中,object 用于定义单例对象,class 用于定义类,trait 用于定义接口。至于还有两个 case class / case object 类型,主要用于支持模式匹配。

兴趣是最好的老师 1137

day06-scala学习之类的继承、抽象类、trait、包及包对象

day05-scala学习之类的定义、属性的getter和setter方法、类的构造器、类的apply方法,我们学习了scala中类的定义、属性的getter和setter方法、类的构造器、类的apply方法。今天学习scala中类的继承、抽象类、trait、包及包对象。

shenjinrui的博客 225

scala学习笔记(八):抽象类、trait特性

1、抽象类 和java中一样 定义抽象类需要使用abstract   object AbstractScala { def main(args: Array[String]): Unit = { val cat = new Cat("小小") cat.cry } } abstract class Animal(name:String){ var...

星空永恒 339

Scala Trait(特征)

Scala Trait是一组方法和抽象类型的集合,它可以被其他类或Trait继承。与Java接口不同,Trait可以包含具有具体实现的方法。当一个类继承了一个Trait时,它必须实现Trait中所有未实现的方法。这使得Trait成为实现多继承的一种方式,因为Scala不支持传统的多继承。Scala Trait是一种强大的概念,它允许我们定义一组方法,这些方法可以被子类实现,同时还可以包含方法的实现。Trait使得Scala具有了实现多继承和混入的能力。通过使用Trait,我们可以创建更加灵活和可扩展的代码。

lly202406的博客 1445

Scala中的抽象类与特征

Scala中的抽象类与特征 抽象类 Scala的抽象类跟Java的一样,不能被实例化。其中一些特性也与Java的抽象类非常类似。 定义抽象类需要使用abstract 在抽象类中,变量不使用就无需初始化,可以等到子类继承时再进行初始化。 在抽象类中,抽象方法无需使用(也不能)用abstract进行修饰。 一个方法只要是没有它的实现(没有等号或没有方法体),它就是抽象的,在子类中覆写或者

Mr.Phoebe的专栏 1612
上一篇: java8 -- 函数接口
下一篇: scala -- 模式匹配 ,判断语句
xiaoduup
博客等级 码龄9年 23粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值