关于继承:java中超类变量引用的子类对象有什么用?

What is the use of a sub class object being referred by a super class variable in java?

本问题已经有最佳答案,请猛点这里访问。

假设B extends A和我们有一个声明A a=new B();超级类变量引用子类对象的用途是什么?对象A((只有子类方法和变量)或(从子类和父类中)可以访问哪些字段和方法?

谢谢


原因是抽象。你不需要知道关于这个物体的每一个微小细节。例如,假设你在开车。在大多数情况下,右边的踏板会让你跑得更快,左边的踏板会让你减速,前面的大圆球会让你操控汽车。这种情况的发生对驾驶员(也就是说,用户)来说并不重要,但是为了让汽车真正移动,这些细节的正确工作是非常重要的。


所以这主要是为了实现:PolymorphismAbstraction

主要的原则是客户端针对更高的标签接口进行编码,而不担心低级别的实现。

这使得在不更改客户机的情况下可以灵活地更改实现。而且客户机还具有尝试多种实现的灵活性。

在您的示例中,可以从a访问的成员是由a类定义的成员。


使用超级类引用类型的用途是不必担心实现类(或特定类),比如List a = new ArrayList();

在这种情况下,只有超级类公开的方法才是可访问的。


嗨,简单来说,我们可以说,所有的B都是A,而不是所有的A都是B。这就是整个继承的工作原理。它提供了所需的弃权。