packagecom.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 ...