OOpre Lec6-继承与接口的使用
Lec6-继承与接口的使用
继承及其应用
extends
- 子类可以访问父类的公共(public)和受保护 (protected)成员
- 私有(private)成员无法被直接被访问,但可以通过调用父类的方法来访问
可以使用obj instanceof MyCLass 表达式来判断对象 obj是否为MyClass的实例化对象
super
-
使用 super.attribute 可以 引用父类中定义的非私有属性
-
如果子类重写了父类的某个方法,那么子类通过super.methodName() 可以 调用父类所实现的那个方法
(this.methodName()是子类自己重写的方法)
-
一般使用 super(arguments) 来调用父类的构造方法,从而完成对父类所定义属性的初始化
@Override
1 |
|
可在子类重写父类方法时标注,非强制要求,可选
子类方法的方法名和参数列表必须与父类方法完全相同
接口及其应用
1 | interface Myinterface { |
- 要求接口中的所有方法都被实现(覆写)
- 可以用a instanceof B判断对象a是否实现了接口B,即是否类型B的实例
- 若父类实现了某个接口,则子类也可以使用父类的接口方法
接口和继承的区别
数量 | 关系 | 概念本质 | |
---|---|---|---|
继承 | 一个类只能有一个父类 | 子类继承了父类的所有属性和方法 | 建立了数据抽象层次 |
接口 | 一个类可以实现多个接口 | 实现接口中所定义的全部方法 | 建立了行为抽象层次 |
作业内容与建议
- 仍为冒险者游戏,在第四次作业的基础上迭代开发
- 允许冒险者雇佣另一个冒险者,且赋予装备、药水瓶、食物、冒 险者价值的概念
- 细化装备和药水瓶的类型,具有不同的功效
- 建议把装备、药水瓶、食物和冒险者都看作是价值体 (commodity)
- 建议引入Commodity接口来建立行为层次关系
- 冒险者 Adventurer 类、装备 Equipment 类、药水瓶 Bottle 类、食物 Food 类实现该接口
- 装备和药水瓶的细分,建议通过继承实现
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自fysszlr's blog
评论 ()