有A、B、C三个类。
A类:实现提升攻击力
B类:实现提升防御力
C类:要如何才能同时拥有A类和B类实现的效果呢?
如果用继承,继承A类时,C类就得重写B类的实现提升防御力。继承B类时,C类就得重写A类的效果。
我要怎么做才能让C类拥有A、B两种效果的同时,又不重复写A、B类已经实现的功能呢?
难道要在C类定义A和B的成员?这会不会有些简单粗暴?是不是像这种情况,游戏里面都是通过组合的方式来解决的?甚至例如:D类,拥有A类和C类的某些功能,但是不包含B类实现的功能(不一定是提升防御力,还可以是其它的效果),但C类因为继承关系已经包含B类的效果了。是不是都只能通过组合的方式来解决?单独分开每个实现的效果,然后进行组合调用?
而像用父类作为参数,子类实现多态。像上面这种情况:让子类继承父类后,子类就不宜再被继承了?(因为我觉得如果继承子类的话,有可能会出现上面的那些情况。)
请大佬指教,谢谢!
A类:实现提升攻击力
B类:实现提升防御力
C类:要如何才能同时拥有A类和B类实现的效果呢?
如果用继承,继承A类时,C类就得重写B类的实现提升防御力。继承B类时,C类就得重写A类的效果。
我要怎么做才能让C类拥有A、B两种效果的同时,又不重复写A、B类已经实现的功能呢?
难道要在C类定义A和B的成员?这会不会有些简单粗暴?是不是像这种情况,游戏里面都是通过组合的方式来解决的?甚至例如:D类,拥有A类和C类的某些功能,但是不包含B类实现的功能(不一定是提升防御力,还可以是其它的效果),但C类因为继承关系已经包含B类的效果了。是不是都只能通过组合的方式来解决?单独分开每个实现的效果,然后进行组合调用?
而像用父类作为参数,子类实现多态。像上面这种情况:让子类继承父类后,子类就不宜再被继承了?(因为我觉得如果继承子类的话,有可能会出现上面的那些情况。)
请大佬指教,谢谢!