SCALA物件導向程式設計(二)

2021-08-26 05:51:29 字數 1684 閱讀 4809

五、隱式轉換和隱式函式

5.1隱式轉換

implicit def a(d: double) = d.toint // 先宣告隱式函式,宣告後就不用管,程式過不去,會自動查詢。

val i1: int = 3.5 //(ok)當發現程式有誤時,scala編譯器會嘗試在隱式函式列表中查詢可以進行轉換的函式

注意:

5.2利用隱式轉換補充自定義類的功能

//如果需要為乙個類增加乙個方法,可以通過隱式轉換來實現。(動態增加)

如想為mysql增加乙個delete方法

class workerv1()

}class workerv2()

}//在實際使用時,如果需要為workerv1補充workerv2裡的功能,可以利用隱式轉換

implicit def workerv1tov2(d:workerv1):workerv2=

var workerv1=new workerv1();

workerv1.update();

workerv1.delete;

workerv1.update();

5.3隱式類

//通過隱式類解決,把需要轉換的源型別作為新型別的建構函式的引數。

implicit classworkerv3(d:workerv1)

}5.4隱式引數

//作用:可以幫助函式中,某種型別的引數設定統一的預設值。

defquery(implicitstring: string): unit =

defmain(args: array[string]): unit =

5.5 隱式的轉換時機

1)  型別不一致時

2)  缺少方法

3)缺少引數時

5.6隱式轉換的前提

1)  不能存在二義性

2)  優先選用顯示的宣告或者定義

5.7demo

//給當前日期加1天的效果

implicit class d(d: date)

}var date = new date()

println(date)

date = date + 1

println(date)

//給當前日期加1秒的效果(此方法存在損失精度,不推薦)

implicit def d(date:date):long=date.gettime/1000

implicit def e(l:long):date=

var date = new date()

println(date)

date = date + 1

println(date)

var date = new date()

println(date)

date = date + 1

println(date)

Scala物件導向二

1.抽象類 在scala 中,使用 abstract 修飾的類稱為抽象類,在抽象類中可以定義屬性 未實現的方法和具體實現的方法 abstract class animal 2.繼承 繼承是物件導向的概念,用於 的可重用性,被擴充套件的類稱為超類或父類,擴充套件的類稱為派生類或子類,scala 可以通...

scala的物件導向程式設計

一 簡單的程式設計 1.scala的簡單程式設計 1 packageer2 3class people 9 def watchfootball teamname string string 12 13object two 22 2.效果 3.構造方法 主構造方法,輔助構造方法。輔助建構函式是在主建構...

Scala介紹二 物件導向

在物件導向學習中,scala的repl就不太合適了,所以需要使用ide來完成後續練習,idea最為流行,下面是在idea中建立scala專案的方法。參考文章 步驟一 首先我們在選單欄點選file new project,然後在彈出的頁面選擇scala,在右側點選idea,接下來我們輸入專案名稱,jd...