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特质使用

     

  • 相关阅读:
    深入理解javascript中的立即执行函数(function(){…})()
    多行文本溢出省略号显示
    JS学习思路
    canvas画圆
    软件需求与软件评估
    parawork功能使用说明
    ”0元中标的商业逻辑“ -- 如何更好防范项目风险(北京软件造价评估技术创新联盟:李培圣)
    parawork平台介绍
    基准化的软件绩效和成本度量
    jQuery对表格的操作及其他应用
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309055.html
Copyright © 2011-2022 走看看