您的位置:首页 > 其它

scala基础与实践中

2016-05-02 14:37 351 查看
抽象类:
1.类的一个或者多个方法没有完整的定义
2.声明抽象方法不需要加abstract关键字,只需要不写方法体
3.子类重写父类的抽象方法时不需要加override
4.父类可以声明抽象字段(没有初始值的字段)
5.子类重写父类的抽象字段时不需要加override

例如:
abstract class person1{
def speak
val name : string
var age : int
}

class student1 extends Persion1{
def speak{
println("speak!!!")
}
val name = "AAA"

val age = 100
}

trait:例如:
1.字段和行为的集合
2.混入类中
3.通过with关键字,一个类可以扩展多个特质(trait)
trait logger{
def log(msg : string)
}

trait consolelogger extends logger{ //第一次继承要用extends
def log(msg : string){
println(msg)
}
}

class Test : extends ConsoleLogger{
def test{
log("ppp")
}
}

apply方法:
1.class ApplyTest{
def test{
println("test")
}
}

object ApplyTest{
def apply() = new ApplyTest
def static{
println("i'm a static method")
}
}

object Basic4 extends App{
val a = ApplyTest()   //直接调用了apply方法,通过此方法a成为了一个ApplyTest对象
a.test
}
类名加括号表示object的apply方法,对象名加括号表示class的apply方法

包可以在任何地方引入,加个大括号,出了大括号就找不到了。

模式匹配:
1.标准用法(match):例如
//匹配值
val value =3 
val result = value match{
case 1 if i ==1  => "one"
case 2 => " two"
case 3 => "three"
cast _ => "i'ont know"
}
 
//匹配类型 
def t(obj : Any) = obj match{
case x : int =>println("int")
case s : string => println("string")
case _ =>println("unknown type"
}
t(1)

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: