zoukankan      html  css  js  c++  java
  • 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特质使用

     

  • 相关阅读:
    nginx能访问html静态文件但无法访问php文件
    LeetCode "498. Diagonal Traverse"
    LeetCode "Teemo Attacking"
    LeetCode "501. Find Mode in Binary Search Tree"
    LeetCode "483. Smallest Good Base" !!
    LeetCode "467. Unique Substrings in Wraparound String" !!
    LeetCode "437. Path Sum III"
    LeetCode "454. 4Sum II"
    LeetCode "445. Add Two Numbers II"
    LeetCode "486. Predict the Winner" !!
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/13262742.html
Copyright © 2011-2022 走看看