【问题标题】:What is the use of a sub class object being referred by a super class variable in java? [duplicate]java中超类变量引用的子类对象有什么用? [复制]
【发布时间】:2013-04-01 12:34:48
【问题描述】:

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

谢谢你

【问题讨论】:

标签: java inheritance


【解决方案1】:

原因是抽象。这个想法是你不需要知道关于物体的每一个微小的细节。例如,假设您正在开车。在大多数情况下,右边的踏板让你走得更快,左边的踏板让你放慢速度,你前面的大圆形东西可以控制汽车。驾驶员(也就是用户)知道这是如何发生的并不重要,但让这些细节正常工作以使汽车真正移动非常重要。

【讨论】:

  • 是的,最重要的是,当您在 B 类中使用任何静态方法时,您需要使用该类的对象来访问属性,或者您的超类必须使用静态说明符定义
【解决方案2】:

使用超类引用类型是不用担心实现类(或具体的类),比如List a = new ArrayList();

在这种情况下,只能访问超类公开的方法。

【讨论】:

    【解决方案3】:

    所以这主要是要实现:Polymorphism以及Abstraction。

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

    这提供了在不更改客户端的情况下更改实现的灵活性。并且客户端可以灵活地尝试多种实现。

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 你没有回答他的问题,但解释了什么是抽象。
      • 我的第一行回答了他的问题!!阅读它!
      • what are the fields and methods accessible by the object a 怎么样?你在哪里回答的?恕我直言,您的回答太笼统了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-09
      相关资源
      最近更新 更多