类和对象
// 类定义
class TestClass {
......
}
// 实例化类
val instance = new TestClass
Singleton 对象
// 定义单例对象
object SingletonExample {
def test(a: Int) = { a + 1 }
}
SingletonExample.test(1) => Int = 2
伴生对象 companion object
单例对象和某一个类的名称相同时,它被称作这个类的伴生对象(必须在同一个文件里定义类和它的伴生 对象),类和它的伴生对象可以互相访问其私有成员。
孤立对象 standalone object
不与伴生类使用相同名称的单例对象被称作孤立对象,孤立对象经常被用到,主要有:
- 把相关功能的方法收集到一起;
- 定义一个 scala 应用的入口点(例如 main 方法);
抽象类
抽象类不能被实例化,可能包含抽象方法(方法没有实现)
// 定义抽象类
abstract class TestAbsClass {
def test: Int // 抽象方法
def test01(a: Int): Int = a + 1
}
// TestExtendClass 继承了 TestAbsClass,并实现了父类的抽象方法
class TestExtendClass extends TestAbsClass {
def test: Int = 100
}
val x = new TestExtendClass
x.test => 100
x.test01(1) => 2
类参数
WTF! 类都可以带参数了,scala 真是玩的太溜了!!!scala 的类参数可以直接在主体中使用,没有必要传递 给构造函数,相当于一种简写。
class WhatTheFuck(f: String, u: String) {
val str = f ++ " " ++ u ++ "!!!"
println(str)
}
scala> val x = new WhatTheFuck("fuck", "you")
fuck you!!!
x: WhatTheFuck = WhatTheFuck@54337562