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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

scala java抽象理解_Scala之类、特质和抽象类

發布時間:2024/9/27 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scala java抽象理解_Scala之类、特质和抽象类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 類

1.1. 類的定義

類的定義:

//定義Point類,構造器帶有兩個參數

class Point(var x: Int, var y: Int) {

//無返回值的類方法

def move(dx: Int, dy: Int): Unit = {

x = x + dx

y = y + dy

}

//沒有參數但是返回值為String類型的重寫方法

override def toString: String =

s"($x, $y)"

}

//創建類的實例

val point1 = new Point(2, 3)

point1.x // 2

println(point1) // prints (2, 3)

構造器可以帶有默認值:

class Point(var x: Int = 0, var y: Int = 0){

...

}

val origin = new Point // x, y都取默認值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

類定義中的其他細節:

//在Scala中,類并不用聲明為public。

//Scala源文件中可以包含多個類,所有這些類都具有公有可見性。

class Person {

//用val修飾的變量是只讀屬性的,只帶getter方法但沒有setter方法

//(相當與Java中用final修飾的變量)

//字段必須初始化

val id = "1234"

//用var修飾的變量,默認同時有公開的getter方法和setter方法

var age: Int = 18

//類私有字段,有私有的getter方法和setter方法,只能在類的內部使用

private var name: String = "王老五"

//對象私有字段,訪問權限更加嚴格的,Person類的方法只能訪問到當前對象的字段

private[this] val hobby = "旅游"

}

scala中,在實現屬性時你有如下四個選擇:

(1) var foo: Scala自動合成一個getter和一個setter

(2) val foo: Scala自動合成一個getter

(3) 由你來定義foo和foo_=方法

(4) 由你來定義foo方法

1.2. 構造器

注意:

(1) 主構造器會執行類定義中的所有語句

(2) 主構造器如果有參數直接放置在類名之后

class ConstructorDemo ( val id: Int ) { … }

(3) 主構造器變成私有的,可以像這樣放置private關鍵字:

class ConstructorDemo private ( val id: Int ) { … }

此時,用戶必須通過輔助構造器來構造Person對象

class ConstructorDemo {

private var var1 = ""

private var var2 = 0

//輔助構造器1

def this(var1:String) {

this() //調用主構造器

this.var1 = var1

}

//輔助構造器2

def this(var1:String, var2:Int) {

this(var1) //調用輔助構造器1

this.var2 = var2

}

}

本文為原創文章,如果對你有一點點的幫助,別忘了點贊哦!比心!如需轉載,請注明出處,謝謝!

總結

以上是生活随笔為你收集整理的scala java抽象理解_Scala之类、特质和抽象类的全部內容,希望文章能夠幫你解決所遇到的問題。

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