快学Scala 第8章 继承知识点总结

1.Scala扩展的方式和Java一样——使用extends关键字

2.和Java一样,你可以将类声明为final,这样它就不能被扩展。

3.还可以将单个方法或字段声明为final,以确保它们不能被重写。

4.在Scala中重写一个非抽象的方法必须使用override修饰符。

5.在Scala中调用超类的方法和Java完全一样,使用super 关键字。

6.要测试某个对象是否属于某个给定的类,可以用isInstanceOf方法。如果测试成功,你就可以用asInstanceOf方法将引用转换为子类的引用。

7.如果想要测试p指向的是一个Employee对象但又不是子类的话,可以用:

if(p.getClass == classOf[Employee])

classOf方法定义在scala.Predef对象中,所以会被自动的引入。

8.在Scala的构造器汇总,不能调用super(params),不像Java,可以用这种方式来调用超类构造器。

9.Scala的字段由一个私有字段和取值器/改值器方法构成。你可以用另一个同名的val字段重写一个val(或者不带参数的def)。子类有一个私有字段和一个公有的getter方法,而这个getter方法重写了超类的getter方法。

10.重写字段
有以下的限制:
(1)def只能重写另一个def。
(2)val只能重写另一个val或不带参数的def。
(3)var只能重写另一个抽象的var

11.和Java一样,你可以用abstract关键字来标记不能被实例化的类,通常这是因为他的某个或几个方法没有被完整定义。

12.在Scala中,不像是Java,你不需要对抽象方法使用使用abstract关键字,你只是省去其他方法体。

13.除了抽象方法意外,类还可以拥有抽象字段。抽象字段就是一个没有初始值的字段。

14.和方法一样,在子类中重写超类中的抽象字段时,不需要override关键字。

15.与Java中基本类型系哪个对应的类,以及Unit类型都扩展自AnyVal。

16.AnyVal和AnyRef都扩展自Any类,而Any类是整个继承层级的根节点。

17.所有的Scala类都实现ScalaObject这个标记接口,这个接口没有定义任何方法。

18.Nothing类型和Java或者C++中的void完全是两个概念。在Scala中,void是由Unit类型表示,该类型只有一个值,那就是()。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值