类:
在scala源文件中可以包含多个类,所有这些类都具有可见性
定义
//主构造器会执行类中定义的所有语句
class Test(val money: Double) {
private var gender = "M"
//用this关键字定义辅助构造器
def this(money:Double,gender: String) {
//每个辅助构造器必须以主构造器或其他的辅助构造器开始
this(money)
this.gender = gender
}
//用val修饰的变量是只读属性,只有getter
val id = 1
//用var修饰的变量既有getter也有setter
var name: String = "tom"
//被private修饰的变量时私有的,但类的伴生对象可以调用
private var age: Int = 18
//被private[this]修饰的变量仅能在类中被访问,对象无法访问,会报错
private[this] var pet = "jerry"
}
/**
* 与类名相同的对象叫做伴生对象
* 类和伴生对象之间可以相互访问私有的属性和方法
*/
object Test {
def main(args: Array[String]): Unit = {
val test = new Test(100.0,"M")
val gender = test.gender
//无法访问
//test.pet
println(gender)
}
}
继承
与java相同都是使用extends关键字
实现接口使用with关键字,定义使用trait关键字
重写一个非抽象方法必须使用override关键字
实现多个接口需要使用extends作为开始
模式匹配
Option类型
在scala中Option类型样例类用来表示可能存在或不存在的的值(Option的子类有Some:有值,None:没有值)
偏函数
被包在花括号内没有match的一组case语句是一个偏函数,它是PartialFunction[A,B]的一个实例,A代表输入类型,B代表返回类型,常用作输入模式匹配