为什么堆栈类继承自java中的向量类?

为什么堆栈类继承自java中的向量类?,java,vector,stack,Java,Vector,Stack,当我提到java类时,我发现Vector类是Stack类的父类。对我来说,这似乎有些奇怪,因为这允许我们用继承的操作违反堆栈的逻辑,例如insertElementAt(),removeElementAt(),等等。这些操作违反了堆栈的规则,即后进先出。任何人都可以提供帮助?堆栈类表示后进先出(LIFO)对象堆栈。它通过五个操作扩展了类Vector,允许将向量视为堆栈。提供了常用的推送和弹出操作,以及一种查看堆栈顶部项目的方法、一种测试堆栈是否为空的方法,以及一种在堆栈中搜索项目并发现其距离顶部有

当我提到java类时,我发现
Vector
类是
Stack
类的父类。对我来说,这似乎有些奇怪,因为这允许我们用继承的操作违反堆栈的逻辑,例如
insertElementAt()
removeElementAt()
,等等。这些操作违反了堆栈的规则,即后进先出。任何人都可以提供帮助?

堆栈类表示后进先出(LIFO)对象堆栈。它通过五个操作扩展了类Vector,允许将向量视为堆栈。提供了常用的推送和弹出操作,以及一种查看堆栈顶部项目的方法、一种测试堆栈是否为空的方法,以及一种在堆栈中搜索项目并发现其距离顶部有多远的方法

首次创建堆栈时,它不包含任何项


Deque接口及其实现提供了一套更完整、更一致的后进先出堆栈操作,应该优先于此类使用。

这不是关于它不应该提供的功能。没有insertElementAt和removeElementAt的向量本质上是一个堆栈。Java SDK的某些部分是历史事故(有些会说“错误”),留在那里主要是因为很难从平台上删除内容。根据Java文档[,“它通过五个操作扩展了类向量,允许将向量视为堆栈”。因此,它不是独立的堆栈类。它是能够作为堆栈工作的向量。