Scala 面向对象(八):特质(接口) 一

摘要:
1.Scala接口简介从面向对象的角度来看,接口不属于面向对象的范畴。Scala是一种纯面向对象的语言。在Scala中,没有接口。在Scala中,接口的概念被特性(特性)所取代。也就是说,当多个类具有相同的trait(feature)时,可以使用关键字trait来隔离和声明trait(feature)。

1 Scala接口的介绍

从面向对象来看,接口并不属于面向对象的范畴,Scala是纯面向对象的语言,在Scala中,没有接口。

Scala语言中,采用特质trait(特征)来代替接口的概念,也就是说,多个类具有相同的特征(特征)时,就可以将这个特质(特征)独立出来,采用关键字trait声明。 理解trait 等价于(interface + abstract class)

Scala 面向对象(八):特质(接口) 一第1张

 2  特质(trait)

trait 的声明

trait 特质名 {

trait体

}

trait 命名 一般首字母大写.

Cloneable , Serializable

object T1 extends Serializable {

}

Serializable: 就是scala的一个特质。

在scala中,java中的接口可以当做特质使用

3 Scala中trait 的使用

一个类具有某种特质(特征),就意味着这个类满足了这个特质(特征)的所有要素,所以在使用时,也采用了extends关键字,如果有多个特质或存在父类,那么需要采用with关键字连接

没有父类

class 类名 extends 特质1 with 特质2 with 特质3 ..

有父类

class 类名 extends 父类 with 特质1 with 特质2 with 特质3

4  特质的快速入门案例

可以把特质可以看作是对继承的一种补充

Scala的继承是单继承,也就是一个类最多只能有一个父类,这种单继承的机制可保证类 的纯洁性,比c++中的多继承机制简洁。

但对子类功能的扩展有一定影响.所以 我们认为: Scala引入trait特征 第一可以替代Java的接口, 第二个也是对单继承机制 的一种补充

Scala 面向对象(八):特质(接口) 一第2张

trait trait1 {
  //声明方法,抽象的.
  def getConnect(user: String, pwd: String): Unit
  //def test(n1:Int)
}
class A {}
class B extends A {}
class C extends A with trait1 {
  override def getConnect(user: String, pwd: String): Unit = {
    println("c连接mysql")
  }}

class D {}
class E extends D with trait1 {
  def getConnect(user: String, pwd: String): Unit = {
    println("e连接oracle")
  }}
class F extends D {}

5 特质trait 的再说明

1)Scala提供了特质(trait),特质可以同时拥有抽象方法和具体方法,一个类可以实现/继承多个特质。

Scala 面向对象(八):特质(接口) 一第3张

 2)特质中没有实现的方法就是抽象方法。类通过extends继承特质,通过with可以继承多个特质

3)所有的java接口都可以当做Scala特质使用

Scala 面向对象(八):特质(接口) 一第4张 Scala 面向对象(八):特质(接口) 一第5张

免责声明:文章转载自《Scala 面向对象(八):特质(接口) 一》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Winform控件react 的一个插件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++中stringstream的使用方法和样例

  之前在leetcode中进行string和int的转化时使用过istringstream,现在大致总结一下用法和测试用例。     介绍:C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含sstream.h头文件。 istringstream类用于执行C++风格的串流的输...

autossh使用(本机记住ssh密码)

autossh版本说明 目前发现同样叫autossh的,有好几个项目 yum,brew中的自动重启ssh会话和隧道 FeeiCN的autossh islenbo的autossh 后面两个的主要是用于记录密码,远程连接 Feeicn版安装使用 安装依赖: Linux yum install expect apt-get install expect...

C# 绘制统计图(柱状图, 折线图, 扇形图)

统计图形种类繁多, 有柱状图, 折线图, 扇形图等等, 而统计图形的绘制方法也有很多, 有Flash制作的统计图形, 有水晶报表生成统计图形, 有专门制图软件制作, 也有编程语言自己制作的;这里我们用就C# 制作三款最经典的统计图: 柱状图, 折线图和扇形图;既然是统计, 当然需要数据, 这里演示的数据存于Sql Server2000中, 三款统计图形都是...

java的http请求实例

package vqmp.data.pull.vqmpull.common.utils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpEntity; import org.springframework.http...

pb常用函数(二)(转)

  GetFocus()功能确定当前焦点位于哪个控件上。语法GetFocus ( )返回值GraphicObject。函数执行成功时返回当前得到焦点控件的引用,发生错误时返回无效引用。用法应用程序利用IsValid()函数可以检测GetFocus()是否返回有效的控件引用。同时,使用TypeOf()函数可以确定控件的类型。Post()功能将指定消息加入到某...

java基础知识--日期时间类

1.1 Date类  java.util.Date类 表示特定的瞬间,精确到毫秒。 继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。 public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。 public Date(long date)...