因为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别名
- 样例类
- 枚举类
- 泛型类
- 包与包对象
- 模式匹配
- 基本语法
- 匹配模式
- 偏函数
- 注解
- 运算符
- 正则表达式
- 隐式类
- 异常处理
- 高级类型
- 结构类型
- 复合类型