因為Scala取消了Java中的`static`關鍵字,所以我們可以使用單例對象來代替。
<br/>
**1. 定義單例對象的基礎語法**
```scala
object ObjectName {
main方法
其它成員方法
字段
}
```
* Scala中的單例對象同Java中的`static`的功能一樣,在首次調用時被創建并且也只能被創建一次,后面無論調用多少次都是調用同一個對象。
* 應該注意到,`main`方法只在單例對象中起作用。
* 訪問單例對象的成員,可以直接`ObjectName.成員`來調用,也只能這樣調用。
* 單例對象不能被`new`。
* 單例對象只有一個無參的主構造器,沒有其它的有參構造器。
* 在 Scala 中,類和單例對象的差別在于,單例對象不能帶參數,而類可以。因為單例對象無法使用 new 關鍵字實例化,也就沒有辦法為它傳遞實例化參數。
* 單例對象不能被繼承。
**2. 定義單例對象**
```scala
object Point1 {
// main方法
def main(args: Array[String]): Unit = {
// 直接 ObjectName.成員 調用object的相關成員
Point1.fun(10, 20)
Point1.z
}
// 其它成員方法
def fun(x:Int, y:Int):Int = x + y
// 字段
val z:Int = 9999
}
```
編譯的Java代碼如下:
```java
import scala.reflect.ScalaSignature;
@ScalaSignature(bytes="\006\0")
// 被final修飾說明單例對象不能被繼承
public final class Point1
{
public static int z()
{
return Point1..MODULE$.z();
}
public static int fun(int paramInt1, int paramInt2)
{
return Point1..MODULE$.fun(paramInt1, paramInt2);
}
public static void main(String[] paramArrayOfString)
{
Point1..MODULE$.main(paramArrayOfString);
}
}
```
- Scala是什么?
- Scala特性
- 開發環境搭建
- 環境搭建
- windows下的環境搭建
- IntelliJ IDEA環境搭建
- Scala關鍵字
- Hello, World
- 數據類型
- 數據類型
- 數據類型層次結構
- 字面量
- Null類型
- Nothing類型
- Unit類型
- 變量與常量
- type定義類型別名
- 字符串插值器
- 條件控制
- 循環控制
- 數組
- 元組
- 集合
- 集合分類
- List常用操作
- Set常用操作
- Map常用操作
- 函數
- 函數聲明與調用
- 函數與方法的區別
- 函數注意事項
- 匿名函數
- 可變參數
- 高階函數
- 中置表達式
- 函數嵌套
- 函數科里化
- 隱式參數
- 隱式函數
- 閉包
- 類和對象
- Java與Scala的比較
- 有關類與對象概念
- 類
- 類的定義和調用
- 類的繼承
- 抽象類
- 單例對象
- 伴生對象和伴生類
- 特質
- 定義特質
- 混入特質
- 抽象類與特質的選擇
- 自身類型
- 依賴注入
- this別名
- 樣例類
- 枚舉類
- 泛型類
- 包與包對象
- 模式匹配
- 基本語法
- 匹配模式
- 偏函數
- 注解
- 運算符
- 正則表達式
- 隱式類
- 異常處理
- 高級類型
- 結構類型
- 復合類型