Scala 關於疊加特性的理解

2022-06-07 14:12:11 字數 1086 閱讀 9402

package

com.atguigu.chapter08.mixin

//看看混入多個特質的特點(疊加特質)

object addtraits

}trait operate4

trait data4

extends operate4

}trait db4

extends data4

}trait file4

extends data4

}class mysql4 {} //

普通類

scala在疊加特質的時候,會從左到右依次構建:

構建完mysql4之後開始構建db4==》db4的父特質是data4,所以會先構建data4 ==》data4 的父特質是operate4,所以先構建operate4 ==》所有父類構建完成之後,db4開始完成自己的構造==》

開始構造file4時,依然還是會先找父類構造,但因為父類之前已經被構造過,所以就跳過,直接構造自己

所以輸出為

1.operate4...    

2.data4

3.db4

4.file4

順序是,(1)從右到左開始執行 , (2)當執行到super時,是指的左邊的特質 (3) 如果左邊沒有特質了,則super就是父特質

所以輸出為:

1. 向檔案"

2. 向資料庫

3. 插入資料 100

以為這就完了嗎?

動態混入  和    常規混入 在構建時的乙個細微差別:

動態混入會先把物件建立好在構建特質,而常規混入是先 構建父類,然後再構建特質,最後再是構建物件

object mixinseq 

}trait aa

trait bb

extends

aa trait cc

extends

bb trait dd

extends

bb

通俗地解釋scala中疊加特質的構建順序和執行順序

1 object mixindemo02 15 1617 trait operate4 2122 trait data4 extends operate4 27 2829 trait db4 extends data4 35 3637 trait file4 extends data4 43clas...

iOS 關於OC的理解和特性分析

多年之前,接觸oc開始,就知道它是一門物件導向的語言。最為物件導向的語言,我們就不得不提起物件導向的三大支柱 封裝 繼承 多型。這三大特性,時常會運用在我們日常的開發過程中,支撐著我們的每乙個專案。封裝 即隱藏物件的屬性和實現細節,僅對外公開介面,控制在程式中屬性的讀和修改的訪問級別 將抽象得到的資...

理解Scala中的抽象控制

在 快學scala 一書中,控制抽象被描述為是一系列語句的聚集,是一種特殊的函式,因為它是本質上只是對一系列語句的封裝,所以它理應 沒有引數輸入 沒有值返回。package com.zhengkw.scala.day03exc classname controlabs author zhengkw ...