Scala学习笔记(五)——组合与继承

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuqingdeqing/article/details/86661059

组合是指一个类持有另一个类的引用,借助被引用的类完成任务。继承是超类、子类的关系。

5.1 抽象方法

一个方法只要没有实现(即没有等号和方法体),它就是抽象的。与java不同,方法的声明不需要也不允许有抽象修饰符。拥有实现的方法被称为具体的方法。

5.2 定义无参方法

带有空括号的方法定义,如def height() : Int。推荐只要方法中没有参数并且方法仅能通过读取所包含对象的属性去访问可变状态(特指方法不能改变可变状态),就使用无参数方法。 这个惯例支持统一访问原则,就是说客户代码不应由属性而是通过字段实现还是方法实现而受到影响。

5.3 重写字段和方法

Java具有4个命名空间(字段、方法、类型、包),而Scala只有2个,值(字段、方法、包、单例对象)和类型(类和特质名)。

这么做的原因是可以实现使用val重写无参方法。

5.4 调用超类构造器

要调用超类构造器,只要简单地把要传递的参数或者参数列表放在超类名之后的括号里即可。

5.5 override修饰符

若子类成员重写了父类的具体成员,则必须使用这个修饰符;若实现的是同名的抽象成员,则这个修饰符是可选的;若成员并未重写或实现基类里的成员则禁用这个修饰符。

5.6 使用组合和继承

组合和继承是利用现存类定义新类的两个方法。如果是根本上的代码重用,通常推荐采用组合而非继承。继承会受累与脆基类问题,因为可能在更改超类时破坏子类。

猜你喜欢

转载自blog.csdn.net/wuqingdeqing/article/details/86661059