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

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

5.1 抽象方法

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

5.2 定义无参方法

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

5.3 重写字段和方法

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

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

5.4 调用超类构造器

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

5.5 override修饰符

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

5.6 使用组合和继承

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值