aaaa成人_日本一道本在线视频_国产高潮流白浆喷水在线观看_韩国专区福利一区二区_一区二区不卡视频_看全色黄大色黄大片女图片第一次

×

大數(shù)據(jù)Scala系列之類

分類:互聯(lián)網(wǎng)熱點 編輯:新網(wǎng)小青年 瀏覽量:1
2020-07-13 16:55:23
大數(shù)據(jù)Scala系列之類 1. 類的定義 Scala 訪問修飾符基本和Java的一樣,分別有:private,protected,public。 如果沒有指定訪問修飾符符,默認(rèn)情況下,Scala 對象的訪問級別都是 public。 私有(Private)成員 用 private 關(guān)鍵字修飾,帶有此標(biāo)記的成員僅在包含了成員定義的類或?qū)ο髢?nèi)部可見,同樣的規(guī)則還適用內(nèi)部類。 class Outer{ class Inner{ private def f(){println("f")} class InnerMost{ f() // 正確 } } (new Inner).f() //錯誤 } (new Inner).f( ) 訪問不合法是因為 f 在 Inner 中被聲明為 private,而訪問不在類 Inner 之內(nèi)。 但在 InnerMost 里訪問 f 就沒有問題的,因為這個訪問包含在 Inner 類之內(nèi)。 Java中允許這兩種訪問,因為它允許外部類訪問內(nèi)部類的私有成員。 保護(Protected)成員 在 scala 中,對保護(Protected)成員的訪問比 java 更嚴(yán)格一些。因為它只允許保護成員在定義了該成員的的類的子類中被訪問。而在java中,用protected關(guān)鍵字修飾的成員,除了定義了該成員的類的子類可以訪問,同一個包里的其他類也可以進行訪問。 package p{ class Super{ protected def f() {println("f")} } class Sub extends Super{ f() } class Other{ (new Super).f() //錯誤 } } 類的定義示例: //定義Point類,構(gòu)造器帶有兩個參數(shù) class Point(var x: Int, var y: Int) { //無返回值的類方法 def move(dx: Int, dy: Int): Unit = { x = x + dx y = y + dy } //沒有參數(shù)但是返回值為String類型的重寫方法 override def toString: String = s"($x, $y)" } //創(chuàng)建類的實例 val point1 = new Point(2, 3) point1.x // 2 println(point1) // prints (2, 3) 構(gòu)造器可以帶有默認(rèn)值: class Point(var x: Int = 0, var y: Int = 0){ ... } val origin = new Point // x, y都取默認(rèn)值0 val point1 = new Point(1)//x=1,y=0 println(point1.x) // prints 1 私有成員變量以及重新定義的Getter/Setter方法: private var _x = 0 private var _y = 0 private val bound = 100 def x = _x def x_= (newValue: Int): Unit = { if (newValue < bound) _x = newValue else printWarning } def y = _y def y_= (newValue: Int): Unit = { if (newValue < bound) _y = newValue else printWarning } private def printWarning = println("WARNING: Out of bounds") } val point1 = new Point point1.x = 99 point1.y = 101 // prints the warning 類定義中的其他細(xì)節(jié): //在Scala中,類并不用聲明為public。 //Scala源文件中可以包含多個類,所有這些類都具有公有可見性。 class Person { //用val修飾的變量是只讀屬性 的,只帶getter方法但沒有setter方法 //(相當(dāng)與Java中用final修飾的變量) //字段必須初始化 val id = "1234" //用var修飾的變量,默認(rèn)同時有公開的getter方法和setter方法 var age: Int = 18 //類私有字段,有私有的getter方法和setter方法,只能在類的內(nèi)部使用 private var name: String = "王老五" //對象私有字段,訪問權(quán)限更加嚴(yán)格的,Person類的方法只能訪問到當(dāng)前對象的字段 private val hobby = "旅游" } scala中,在實現(xiàn)屬性時你有如下四個選擇: var foo: Scala自動合成一個getter和一個setter val foo: Scala自動合成一個getter 由你來定義foo和foo_=方法 由你來定義foo方法 2. 構(gòu)造器 注意: 1.主構(gòu)造器會執(zhí)行類定義中的所有語句 2.主構(gòu)造器如果有參數(shù)直接放 置在類名之后 class ConstructorDemo ( val id: Int ) { … } 3.主構(gòu)造器變成私有的,可以像這樣放 置private關(guān)鍵字: class ConstructorDemo private ( val id: Int ) { … } 此時,用戶必須通過輔助構(gòu)造器來構(gòu)造Person對象 class ConstructorDemo { private var var1 = "" private var var2 = 0 //輔助構(gòu)造器1 def this(var1:String) { this() //調(diào)用主構(gòu)造器 this.var1 = var1 } //輔助構(gòu)造器2 def this(var1:String, var2:Int) { this(var1) //調(diào)用輔助構(gòu)造器1 this.var2 = var2 } }

聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)

送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時

需注明出處:新網(wǎng)idc知識百科

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 爱福利在线视频 | 免费一区区三区四区 | 成人免费在线网站 | 国产精品欧美一区二区 | 蜜臀人妻精品一区二区免费 | 亚洲一二三四2021不卡 | 成人午夜精品在线 | 性久久久久久久久久久 | 性猛交xxxxx按摩欧美 | 免费观看的av网站 | 亚洲好穴| 亚洲猛交xxxx乱大交 | 免费古装a级毛片无码 | 黄瓜视频在线观看污 | 日本成人久久久 | 爽爽免费视频 | 国产精品一区二区av日韩在线 | 刺激性视频黄页 | 极品粉嫩嫩模大尺度无码视频 | 亚洲毛片在线视频 | 亚洲av禁18成人毛片一级 | 久久精品国产第一区二区三区 | 无码一区二区三区在线观看 | 欧美亚洲中日韩中文字幕在线 | 国产精品一区二区三区99 | 狠狠狠的在啪线香蕉亚洲应用 | 蜜桃麻豆WWW久久囤产精品 | 国产麻豆老师在线观看 | 久色欧美 | AV中文无码乱人伦在线观看 | 亚洲一级av毛片 | 久久热这里只有精品在线观看 | 国产色网站 | 老女人高潮视频 | 最近中文字幕在线视频 | 国产99久久亚洲综合精品西瓜tv | 正在播放露脸一区 | 国产91精品看黄网站 | 男男GV白嫩小受GV在线播放 | 久久久亚洲精品中文字幕 | 影音先锋女人AV鲁色资源网久久 |