scala学习笔记(二)

liuxingqi bio photo By liuxingqi Comment

类和对象

// 类定义
class TestClass {
 ......
}
// 实例化类
val instance = new TestClass

Singleton 对象

// 定义单例对象
object SingletonExample {
    def test(a: Int) = { a + 1 }
}

SingletonExample.test(1) => Int = 2
伴生对象 companion object

单例对象和某一个类的名称相同时,它被称作这个类的伴生对象(必须在同一个文件里定义类和它的伴生 对象),类和它的伴生对象可以互相访问其私有成员。

孤立对象 standalone object

不与伴生类使用相同名称的单例对象被称作孤立对象,孤立对象经常被用到,主要有:

  1. 把相关功能的方法收集到一起;
  2. 定义一个 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
comments powered by Disqus