当前位置: 代码迷 >> J2SE >> java 中的组合有关问题
  详细解决方案

java 中的组合有关问题

热度:38   发布时间:2016-04-23 19:39:51.0
java 中的组合问题
JAVA中的组合,如果组合里面的类新增了一个方法,为什么不能直接用组合定义的对象去使用这个方法,而是需要在组合里面定了这个方法,才可以使用?
比如下面的程序
如果linkedlist类新增了一个remove的方法
那么不能直接用list.remove去使用remove方法
而是需要跟其他方法那样去新定义一个remove方法才可以用



------解决思路----------------------
封装嘛,当然不能让别人知道你内部如何实现的
组合算是底层实现了,只是这个底层用的是已经实现的类
你当然可以用 stack.list.remove()方法直接操作
但是如果你是提供给别人用,别人一眼就知道你怎么实现的了
设计模式里面有个适配器模式,和那个味道挺像的
封装成自己的接口,也可以保持操作的一致性
都是stack.add  .pop()什么的,
突然来个 stack.list.remove()吓死宝宝了
------解决思路----------------------
引用:
Quote: 引用:

看来你还没有理解组合和继承,看看这篇文章吧http://blog.csdn.net/Cpp_Java_Man/article/details/705279


那请问下
题目说的组合不能用stack函数直接饮用新增的remove方法
但是实际上可以用stack.list.remove()方法
这是为什么呢?

1. list对象是private修饰的,所以不可能stack.list这样使用list对象;
2. 题目中说的很清楚:是Stack的对象访问removeElement(index)方法,就算你能用stack.list访问list对象,并使用stack.list.remove访问方法,那也是list访问的,不是stack访问的。
  相关解决方案