Java对象声明超出了常见的习语

时间:2015-02-05 05:33:31

标签: java oop

通常,当用Java创建新对象时,它遵循惯用语:

Object obj = new Object();

Object()构造函数与对象类型Object匹配。

但如果它没有呢?我从creating objectspolymorphism上的Oracle Docs了解到,构造函数必须位于该对象的类或其子类之一中。但是,假设我们想要声明一个新堆栈。我的第一直觉是:

Stack s1 = new Stack();

但我认为这样做也是有效的:

Object s2 = new Stack(); //This

这里有区别吗?关于s2我们真正说的是什么?我猜s2只是一个空堆栈,但只能访问Object类方法?我不确定为什么有人会这样做,但我希望巩固我对Java层次结构的理解。是否有任何情况下某人在创建新对象时会使用子类的构造函数?

任何和所有信息性的回复将不胜感激。提前谢谢!

0 个答案:

没有答案