JAVA中的组合,如果组合里面的类新增了一个方法,为什么不能直接用组合定义的对象去使用这个方法,而是需要在组合里面定了这个方法,才可以使用?
比如下面的程序
如果linkedlist类新增了一个remove的方法
那么不能直接用list.remove去使用remove方法
而是需要跟其他方法那样去新定义一个remove方法才可以用
------解决思路----------------------
封装嘛,当然不能让别人知道你内部如何实现的
组合算是底层实现了,只是这个底层用的是已经实现的类
你当然可以用 stack.list.remove()方法直接操作
但是如果你是提供给别人用,别人一眼就知道你怎么实现的了
设计模式里面有个适配器模式,和那个味道挺像的
封装成自己的接口,也可以保持操作的一致性
都是stack.add .pop()什么的,
突然来个 stack.list.remove()吓死宝宝了
------解决思路----------------------
1. list对象是private修饰的,所以不可能stack.list这样使用list对象;
2. 题目中说的很清楚:是Stack的对象访问removeElement(index)方法,就算你能用stack.list访问list对象,并使用stack.list.remove访问方法,那也是list访问的,不是stack访问的。