scala基础与实践中

抽象类:
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)


 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值