日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala-Unit6-final/type关键字、样例类样例对象

發布時間:2025/3/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala-Unit6-final/type关键字、样例类样例对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、關鍵字

  1.final關鍵字

  用final修飾的類:不能被繼承

  用final修飾的方法:不能被重寫

  注意:(1)在Scala中變量不需要用final修飾,因為val與var已經限制了變量是否可變

     (2)final不能修飾特質,但是可以修飾抽象類

trait Animal {def eat(name:String)final def sleep(name:String):Unit ={println(s"$name ->睡得天花亂墜")} }

  如圖代碼,Pig繼承特質Animal后使用“ctrl + o”快捷鍵想重寫sleep方法,但是沒有顯示。

  2.type關鍵字:別名設置

    命令行操作:type S = String  //用S代替String

          val name:S = "dilireba"

trait Anl {type Tdef sleep(str:T):Unit={println(str)} }object AnlTest extends Anl {override type T = Stringdef main(args: Array[String]): Unit = {AnlTest.sleep("很香")} }

   如上代碼:AnlTest繼承Anl特質,重寫Type T為String類型。

   type可以讓我們的程序變得更靈活!

?

二、樣例對象&樣例類

  1.樣例類:case class,它是特殊的類,可以用于模式匹配。

    寫法:case class 類名(屬性)

    當一個類被聲明為樣例類時,Scala編譯器會自動為我們做一下工作:

    (1)樣例類的構造器中的參數默認為val類型,也可以聲明為var,但不推薦;

    (2)為樣例類自動創建伴生對象,并且在其中實現apply方法,使我們使用時不用new直接使用;

    (3)在伴生對象中實現unapply方法,用于模式比配。

case class Boy(high:Int,weight:Int) case class Girl(high:Int,weight:Int)object TestSex extends App {def objMatch(obj:Any) = obj match{case Boy(x,y) => println(s"boy $x high $y weight")case Girl(x,y) => println(s"gril $x high $y weight ")}objMatch(Boy(180,150))objMatch(Girl(165,95)) }

  2.樣例對象:不能封裝數據,支持模式匹配

    寫法:case object 類名(屬性)

    case object Check

    match{

      case "Check" => println(Check)

    }

?

轉載于:https://www.cnblogs.com/HelloBigTable/p/10283972.html

總結

以上是生活随笔為你收集整理的Scala-Unit6-final/type关键字、样例类样例对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。