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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala 基础(4)—— 类和对象

發布時間:2025/5/22 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala 基础(4)—— 类和对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 類、字段和方法

Scala 用 class 關鍵字定義類,一旦定義好一個類,就可以使用 new 關鍵字創建對象。

Scala 使用 new 調用無參構造器時,可以不使用 (),推薦不使用括號:

class MyClass {// MyClass 的定義 }val a = new MyClass

?

在類的定義中,可以填入字段(field)和方法(method),兩者統稱為成員(member)。

字段保留了對象的狀態,即數據。

方法使用數據執行計算。

使用 var 或者 val 定義字段,使用 def 定義方法。

為了控制外部對于對象的字段和方法的訪問,可以給這些加上訪問控制符(private 和 protected),訪問控制符的用法在后面的章節細講。

?

Scala 的方法和 Java 的方法,有一個顯著的區別,就是方法的入參默認都是 val 類型的。

所以這樣的調用是非法的:

def add(b: Byte): Unit = {b = 1 // 不能編譯 }

?

Java 強制 java 文件和公有類采用統一名字,Scala 沒有強制這一點,但是仍然推薦和 Java 的相同風格。

?

?

2. 單例對象

Scala 沒有 static 關鍵字,在 class 里面定義的字段方法都是對象持有的,也就是實例成員。

Scala 有另外辦法去實現靜態成員,就是 object 關鍵字,我們稱這種用 object 關鍵字定義的為單例對象(singleton object)。

object MyClass {// 這里定義靜態字段 和 靜態方法 }

?

當單例對象和某一個類共享同一個名字,稱這個單例對象是這個類的伴生對象(companion object)。同時類又叫這個單例對象的伴生類(companion class)。

必須在同一個文件中定義類和類的伴生對象。

類和它的伴生對象可以互相訪問私有成員。

沒有同名伴生類的單例對象被稱為孤立對象(standalone object),常用于工具方法。

?

類和單例對象有一個區別,就是單例對象不接受參數。

單例對象只有在首次被代碼訪問的時候才初始化。

?

?

3. 對象相等性

我們都知道,Java 在判斷兩個對象是否相等時有2個語義:

引用相等:== 操作符

值相等:Object 類的 equals() 方法

?

而 Scala 在這一方面和 Java 不同

值相等:== 操作符

引用相等:Any 類(所有 Scala 類的超類)的 eq 方法,ne 方法(與 eq 方法結果相反)

def main(args: Array[String]): Unit = {val s = "Hello World!"val s1 = "Hello"val s2 = " World!"println(s == s1 + s2) // trueprintln(s eq s1 + s2) // falseprintln(s ne s1 + s2) // true}

?

Scala 有一個優勢在于,無論是使用 == 操作符,還是 eq 或是 ne 方法,不需要擔心左側為 null 時拋出異常。

?

轉載于:https://www.cnblogs.com/jing-an-feng-shao/p/10247503.html

總結

以上是生活随笔為你收集整理的Scala 基础(4)—— 类和对象的全部內容,希望文章能夠幫你解決所遇到的問題。

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