成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala類:復數類,無參方法,繼承和覆蓋

開發 后端
Scala是一門面向對象的語言,因此它擁有很多關于“類”的描述。本文簡單介紹了Scala類的一些特點。

本文源自Michel Schinz和Philipp Haller所寫的A Scala Tutorial for Java programmers,由Bearice成中文。***篇為Scala簡單做了一下入門,第二篇描述Scala對象。在這一部分中,將對Scala類進行一些介紹。

51CTO編輯推薦:Scala編程語言專題

5 Scala類

正如我們所見,Scala是一門面向對象的語言,因此它擁有很多關于“類”的描述 。Scala類使用和Java類似的語法進行定義。但是一個重要的不同點在于Scala中的類可以擁有參數,這樣就可以得出我們下面關于對復數類(Complex)的定義:

class Complex(real: Double, imaginary: Double) {
       
def re() = real
       
def im() = imaginary
}

我們的復數類(Complex)接受兩個參數:實部和虛部。這些參數必須在實例化時進行傳遞,就像這樣:new Complex(1.5, 2.3)。類定義中包括兩個叫做re和im的方法,分別接受上面提到的兩個參數。

值得注意的是這兩個方法的返回類型并沒有顯式的聲明出來。他們會被編譯器自動識別。在本例中他們被識別為Double

但是編譯器并不總是像本例中的那樣進行自動識別。不幸的是關于什么時候識別,什么時候不識別的規則相當冗雜。在實踐中這通常不會成為一個問題,因為當編譯器處理不了的時候會發出相當的抱怨。作為一個推薦的原則,Scala的新手們通常可以試著省略類型定義而讓編譯器通過上下文自己判斷。久而久之,新手們就可以感知到什么時候應該省略類型,什么時候不應該。

5.1 無參方法

關于方法re和im還有一個小問題:你必須在名字后面加上一對括號來調用它們。請看下面的例子:

object ComplexNumbers {
       
def main(args: Array[String]) {
                val c
= new Complex(1.2, 3.4)
                println
("imaginary part: " + c.im())
       
}
}

你可能覺得吧這些函數當作變量使用,而不是當作函數進行調用,可能會更加令人感到舒服。事實上我們可以通過定義無參函數在Scala做到這點。這類函數與其他的具有0個參數的函數的不同點在于他們定義時不需要在名字后面加括弧,所以在使用時也不用加(但是無疑的,他們是函數),因此,我們的Complex類可以重新寫成下面的樣子;

class Complex(real: Double, imaginary: Double) {
       
def re = real
       
def im = imaginary
}

5.2 繼承和覆蓋

Scala中的所有類都繼承一個父類,當沒有顯示聲明父類時(就像上面定義的Complex一樣),它們的父類隱形指定為scala.AnyRef。

在子類中覆蓋父類的成員是可能的。但是你需要通過override修飾符顯示指定成員的覆蓋。這樣的規則可以避免意外覆蓋的情況發生。作為演示,我們在Complex的定義中覆蓋了Object的toString方法。

class Complex(real: Double, imaginary: Double) {
       
def re = real
       
def im = imaginary
       
override def toString() =
               
"" + re + (if (im < 0) "" else "+") + im + "i"
}

有關Scala類先介紹到這里,下面將介紹Scala的模式匹配和條件類。

【相關閱讀】

  1. 萬物皆對象:介紹Scala對象
  2. Scala入門:Scala例子,以及如何與Java交互
  3. Scala開發環境搭建與資源推薦
  4. Google App Engine上的Scala+Lift初試
  5. Scala初學者學習資料:main(String[])
責任編輯:yangsai 來源: Google Code
相關推薦

2009-07-20 16:56:51

Scala類的定義

2009-07-08 17:42:26

this屬性

2009-12-11 10:42:00

Scala講座類定義構造函數

2009-09-09 11:37:08

Scala的模式匹配

2009-07-08 17:51:45

constructor

2009-07-08 17:48:18

prototype屬性

2011-07-07 13:39:14

Cocoa 框架

2009-06-16 17:54:38

Scala類語法語義

2021-10-12 20:56:17

Python子類父類

2021-04-21 10:01:53

Python類方法靜態方法

2017-07-21 09:40:35

Python類、繼承和多態

2009-07-22 07:53:00

Scala無參數方法

2009-07-22 09:31:59

Scala類類層級Java類

2023-10-18 16:30:50

2009-07-22 07:53:00

Scala擴展類

2009-07-08 15:35:18

Case類Scala

2011-05-25 16:23:35

Javascript類繼承

2023-09-27 23:28:28

Python編程

2021-12-09 10:51:47

Go繼承

2010-06-10 16:09:28

路由選擇協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产婷婷国产香蕉 | 日本午夜在线视频 | 九九伦理电影 | 午夜视频网站 | 亚洲精品日韩在线 | 午夜二区 | 妖精视频一区二区三区 | 九色 在线 | 亚洲 成人 在线 | 一区二区日本 | 91麻豆精品国产91久久久久久 | 国产性色视频 | 午夜电影日韩 | 成人激情视频免费观看 | 亚洲v日韩v综合v精品v | 日本久久一区二区三区 | 欧美一级片在线观看 | 国产亚洲一级 | 国产精品毛片在线 | 亚洲免费视频在线观看 | 狠狠操狠狠操 | 中文字幕乱码一区二区三区 | 成人性生交a做片 | 艹逼网 | a国产一区二区免费入口 | 精品视频在线观看 | 欧美中文字幕一区二区三区亚洲 | 四虎影院在线观看av | 国产蜜臀97一区二区三区 | 国产精品久久精品 | 在线免费激情视频 | 国产精品久久久久久婷婷天堂 | 成人不卡一区二区 | 国产一区二区三区高清 | 成人欧美一区二区三区在线播放 | 中文字幕在线视频一区二区三区 | 国产精品成人一区二区三区吃奶 | 国产精品视频播放 | 免费看黄色片 | 美女逼网站 | 亚洲国产乱码 |