Stack是个Vector,这从逻辑观点看是不正确的 在Java编程思想的7.8.4节中,对于final的忠告作者写到,Stack继承自Vector,就是说Stack是个Vector,这从逻辑的观点看是不正确的,请问大家这句话怎么理解呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为啥从逻辑观点上看不正确?源码就是:public class Stack<E> extends Vector<E> {人类继承自灵长类,就是说:人类是灵长类。 哦,估计是说从实际上的语义上觉得很奇怪吧:“Stack extends Vector”从语义上意味着:堆栈是个向量 或者 堆栈属于向量。其实从现实生活中,并不会认为堆栈是从向量衍伸而来的,所以这种继承关系会让人从语义上觉得奇怪。有点像是:某人为了贪图方便,定义猴子的时候,直接从人类继承过来了;结果语义变成了 猴子属于人类。 有种继承叫 实现上的继承有种继承叫 类型继承比如在java.util.Date与java.sql.Timestamp之间,java.sql.Timestamp的JAVA API就明确说了:鉴于 Timestamp 类和上述 java.util.Date 类之间的不同,建议代码一般不要将 Timestamp 值视为 java.util.Date 的实例。Timestamp 和 java.util.Date 之间的继承关系实际上指的是实现继承,而不是类型继承。 从逻辑观点上看不正确就是说,Stack本来可用成员函数就是很少的像push,pop等。而直接继承Vector后,该Stack拥有了Vector的所有成员函数。因此从逻辑上看很奇怪。 这只不过是共享了Vector的一些属性和方法,但Stack不是Vector他是一个全新的类,他有他自己的特性。 Effective java上说继承有自己的一些原则,但是显然栈并不是向量,所以栈不应该扩展向量。同样的,Properties不应该继承HashTable.这样回导致子类拥有一些父类的方法,逻辑奇怪也可能出现歧义。 在有序的数组中插入一个数,插入后也要是有序的,这个插入方法有问题,哪位大神指教一下,急急急。 有关使用Panel的问题 super.paintComponent(g)绘制的背景上如何添加组件 不用数组和方法。这个练习题,怎么做。我是新手,请高手指点。 关于Unicode 关于用JAVA连接无线网络的问题 为什么不能在按钮事件中向主窗体添加Panel却不能显示? 关于Component.show()的疑问 链接SQLSERVER7.0为什么取不到表? jdom获取xml中元素 求方法:在指定路径下按照坐标画出图片 Object中clone()的使用问题
public class Stack<E> extends Vector<E> {
人类继承自灵长类,就是说:人类是灵长类。
有种继承叫 类型继承比如在java.util.Date与java.sql.Timestamp之间,java.sql.Timestamp的JAVA API就明确说了:
鉴于 Timestamp 类和上述 java.util.Date 类之间的不同,建议代码一般不要将 Timestamp 值视为 java.util.Date 的实例。Timestamp 和 java.util.Date 之间的继承关系实际上指的是实现继承,而不是类型继承。