中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

scala的類怎么定義

發布時間:2021-12-08 15:08:48 來源:億速云 閱讀:206 作者:iii 欄目:大數據

本篇內容介紹了“scala的類怎么定義”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

Scala中的類是用于創建對象的藍圖,其中包含了方法、常量、變量、類型、對象、特質、類,這些統稱為成員。

類定義

一個最簡的類的定義就是關鍵字class+標識符,類名首字母應大寫。

class User
val user1 = new User

關鍵字new被用于創建類的實例。User由于沒有定義任何構造器,因而只有一個不帶任何參數的默認構造器。然而,你通常需要一個構造器和類體。下面是類定義的一個例子:

class Point(var x: Int, var y: Int) {
 def move(dx: Int, dy: Int): Unit = {    x = x + dx    y = y + dy  }
 override def toString: String =    s"($x, $y)"}
val point1 = new Point(2, 3)point1.x  println(point1)

Point類有4個成員:變量xy,方法movetoString。與許多其他語言不同,主構造方法在類的簽名中(var x: Int, var y: Int)move方法帶有2個參數,返回無任何意義的Unit類型值()。這一點與Java這類語言中的void相當。另外,toString方法不帶任何參數但是返回一個String值。因為toString覆蓋了AnyRef中的toString方法,所以用了override關鍵字標記。

構造器

構造器可以通過提供一個默認值來擁有可選參數:

class Point(var x: Int = 0, var y: Int = 0)
val origin = new Point  val point1 = new Point(1)println(point1.x)

在這個版本的Point類中,xy擁有默認值0所以沒有必傳參數。然而,因為構造器是從左往右讀取參數,所以如果僅僅要傳個y的值,你需要帶名傳參。

class Point(var x: Int = 0, var y: Int = 0)val point2 = new Point(y=2)println(point2.y)

這樣的做法在實踐中有利于使得表達明確無誤。

私有成員和Getter/Setter語法

成員默認是公有(public)的。使用private訪問修飾符可以在類外部隱藏它們。

class Point {  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 Pointpoint1.x = 99point1.y = 101

在這個版本的Point類中,數據存在私有變量_x_y中。def xdef y方法用于訪問私有數據。def x_=def y_=是為了驗證和給_x_y賦值。注意下對于setter方法的特殊語法:這個方法在getter方法的后面加上_=,后面跟著參數。

主構造方法中帶有valvar的參數是公有的。然而由于val是不可變的,所以不能像下面這樣去使用。

class Point(val x: Int, val y: Int)val point = new Point(1, 2)point.x = 3

不帶valvar的參數是私有的,僅在類中可見。

class Point(x: Int, y: Int)val point = new Point(1, 2)point.x

“scala的類怎么定義”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

钦州市| 赣州市| 万年县| 双江| 稷山县| 获嘉县| 施甸县| 建水县| 甘洛县| 舞钢市| 咸宁市| 大石桥市| 循化| 微博| 和田市| 鹰潭市| 敦煌市| 天长市| 冕宁县| 保德县| 邛崃市| 子长县| 长治县| 金华市| 仙居县| 南陵县| 宝山区| 方城县| 平潭县| 万年县| 彰武县| 双辽市| 新竹市| 合川市| 当阳市| 蒙城县| 武强县| 定日县| 彭泽县| 健康| 绥宁县|