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


    1 Scala接口的介绍

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

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

     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的接口, 第二个也是对单继承机制 的一种补充

    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),特质可以同时拥有抽象方法和具体方法,一个类可以实现/继承多个特质。

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

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

     

  • 相关阅读:
    好书推介《实战机器学*》
    Web技术图书名单
    大数据技术书,看看有没有感兴趣的
    博客园设置自定义皮肤,添加自定义小模块悬浮天气组件,github图标链接等
    Final Cut Pro 视频剪辑学习记录,快捷操作等
    css 利用 clip-path 裁剪多边形,三角形,梯形,六边形等
    有呀,有呀,设计!有呀,有呀,组件!
    github README添加badge标识,多彩的tag标签
    vue timeline 开箱即用的时间轴组件,日志更新时间轴组件
    那些需要收藏的网站网址
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13262742.html
Copyright © 2020-2023  润新知