-
面向對象
和Java一樣Scala面向對象
類是對象的模板、抽象。定義一個類後,可以使用關鍵字new來創建一個類的對象。 通過對象可以使用定義的類的所有功能。
class表示類 和Java不同,class不能運行。雖然可以定義main方法,但是不能運行
class Point(xc: Int, yc: Int) {
var x: Int = xc
var y: Int = yc
def move(dx: Int, dy: Int) {
x = x + dx
y = y + dy
println ("Point x location : " + x);
println ("Point y location : " + y);
}
}
繼承:在Scala中,我們可以擴展一個Scala類,使用與Java中相同的方式設計繼承的類(使用extends關鍵字),但有兩個限制:方法重寫需要override關鍵字,只有主構造函數可以通過參數調用基類構造函數。讓我們擴展上面的類,並增加一個類的方法。
Scala單例對象是十分重要的,沒有像在Java一樣,有靜態類、靜態成員、靜態方法,但是Scala提供了object對象,這個object對象類似於Java的靜態類,它的成員、它的方法都默認是靜態的。
Scala它使用單例對象。單例是一種只能有一個實例的對象。使用object關鍵字對象而不是類關鍵字創建單例。由於無法實例化單例對象,因此無法將參數傳遞給主構造函數。下面列出Scala使用單例對象的所有示例。
object 是可以運行的
class Point(val xc: Int, val yc: Int) {
var x: Int = xc
var y: Int = yc
def move(dx: Int, dy: Int) {
x = x + dx
y = y + dy
}
}
object Demo {
def main(args: Array[String]) {
val point = new Point(10, 20)
printPoint
def printPoint{
println ("Point x location : " + point.x);
println ("Point y location : " + point.y);
}
}
}
如果有同樣一個類與該object名字一樣,則稱該object爲該類的伴生對象,相對應,該類爲object的伴生類。如果一個類有它的伴生對象,這個類就可通過object的名字訪問到所有成員,但object不在該類的作用範圍。
class University{
val id = University.newStudentNo
private var number = 0
def aClass (number : Int){this.number += number}
}
object University {
private var studentNo = 0
def newStudentNo = {
studentNo += 1
studentNo
}
}
參考自:
http://www.jianshu.com/p/538fd44137fd
http://www.runoob.com/scala/scala-basic-syntax.html
http://www.yiibai.com/scala/scala_classes_objects.html