Scala基础知识之继承
一、拓展 (继承)
extends是Scala中实现继承的保留字
思考:单例对象是否能被继承呢?
二、 重写(Override)
规则
例如:
三、抽象(abstract)
四 、保护 (final, protected)
五、 构造
子类构造器的运行在超类构造器运行之后
在超类的构造器中调用的成员被子类重写后,返回值可能不正确:
构造week对象前先执行month的构造器,num被初始化为31,month为初始化days 数组,调用num,但num被子类week重写了,但因为week构造器还没被调用,此时 num的值未被初始化,因而返回0,days被设置为长度为0的数组,month构造器运行 完毕,执行week构造器,num被初始化为7
解决方法:
将超类的val声明为final
将超类的val声明为lazy
在子类中使用提前定义语法