Scala继承

继承

抽象类

  • 定义抽象类需要使用关键字abstract
  • 定义抽象类的抽象方法不需要使用关键字abstract
  • 抽象类中定义的字段没给初值就是抽象字段,必须给出类型声明
  • 子类重载父类的抽象成员,override可选;重载父类的非抽象成员,override必须加
  • 只能重载val类型字段,不能重载var类型字段
abstract class Car{
    val carBrand:String//字段没有初始化值,就是一个抽象字段
    def info()//抽象方法
    def greeting(){
        println("Welcome to my Car!")
    }
}
class BMWCar extends Car{
    override val carBrand:String="BMW"
    def info(){
        printf("This is a %s car.It is expensive.\n",carBrand)
    }
    override def greeting(){
        println("Welcome to my BMW Car!")
    }
}
class BYDCar extends Car{
    override val carBrand:String="BYD"
    def info(){
        printf("This is a %s car.It is cheap.\n",carBrand)
    }
    override def greeting(){
        println("Welcome to my BYD Car!")
    }
}
object MyCar{
    def main(args:Array[String]){
        val myCar1=new BMWCar()
        val myCar2=new BYDCar()
        myCar1.greeting()
        myCar1.info()
        myCar2.greeting()
        myCar2.info()
    }
}

scala类的层次结构

AnyVal
Any
AnyRef
Char
Byte
Short
Int
Long
Boolean
Unit
Double
Float
Scala的引用类型
Java的String
其它Java的引用类型
Null
Nothing

Option类

  • 是一个抽象类,有个子类Some,有值时,封装成Some对象返回,没有纸返回None对象
case class Book(val name:String,val price:Double)
val books=Map("hadoop"->Book("Hadoop",35.5),"spark"->Book("Spark",55.5),"hbase"->Book("Hbase",26.0))//定义一个书名到书对象的映射
books.get("hadoop")//返回该键所对应值的Some对象,Option[Book]=Some(Book(Hadoop,35.5))
books.get("hive")//不存在该键,返回None对象,Option[Book]=None
books.get("hadoop").get//Some对象的get方法返回其包装的对象,Book=Book(Hadoop,35.5)
books.get("hive").get//None对象的get方法会抛出异常
books.get("hive").getOrElse(Book("UnKnown name",0))//Book=Book(UnKnown name,0.0)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值