通常,当用Java创建新对象时,它遵循惯用语:
Object obj = new Object();
Object()
构造函数与对象类型Object
匹配。
但如果它没有呢?我从creating objects和polymorphism上的Oracle Docs了解到,构造函数必须位于该对象的类或其子类之一中。但是,假设我们想要声明一个新堆栈。我的第一直觉是:
Stack s1 = new Stack();
但我认为这样做也是有效的:
Object s2 = new Stack(); //This
这里有区别吗?关于s2
我们真正说的是什么?我猜s2
只是一个空堆栈,但只能访问Object
类方法?我不确定为什么有人会这样做,但我希望巩固我对Java层次结构的理解。是否有任何情况下某人在创建新对象时会使用子类的构造函数?
任何和所有信息性的回复将不胜感激。提前谢谢!