Scala關鍵字class和object

  • 面向對象

和Java一樣Scala面向對象

類是對象的模板、抽象。定義一個類後,可以使用關鍵字new來創建一個類的對象。 通過對象可以使用定義的類的所有功能。

  • class

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關鍵字,只有主構造函數可以通過參數調用基類構造函數。讓我們擴展上面的類,並增加一個類的方法。

  • object

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

http://www.cnblogs.com/-crazysnail/p/3984010.html

http://www.cnblogs.com/nethk/p/5609320.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章