【发布时间】:2013-04-01 12:34:48
【问题描述】:
假设B extends A我们有一个声明A a=new B();超类变量引用子类对象有什么用?对象a可以访问的字段和方法有哪些((只有子类方法和变量)或者(来自子类和父类))?
谢谢你
【问题讨论】:
-
谷歌
java inheritance polymorphism。您应该能够找到问题的答案。
标签: java inheritance
假设B extends A我们有一个声明A a=new B();超类变量引用子类对象有什么用?对象a可以访问的字段和方法有哪些((只有子类方法和变量)或者(来自子类和父类))?
谢谢你
【问题讨论】:
java inheritance polymorphism。您应该能够找到问题的答案。
标签: java inheritance
原因是抽象。这个想法是你不需要知道关于物体的每一个微小的细节。例如,假设您正在开车。在大多数情况下,右边的踏板让你走得更快,左边的踏板让你放慢速度,你前面的大圆形东西可以控制汽车。驾驶员(也就是用户)知道这是如何发生的并不重要,但让这些细节正常工作以使汽车真正移动非常重要。
【讨论】:
使用超类引用类型是不用担心实现类(或具体的类),比如List a = new ArrayList();
在这种情况下,只能访问超类公开的方法。
【讨论】:
所以这主要是要实现:Polymorphism以及Abstraction。
主要原则是客户端针对更高标签的接口进行编码,而不用担心低级实现。
这提供了在不更改客户端的情况下更改实现的灵活性。并且客户端可以灵活地尝试多种实现。
在您的示例中,可从a 访问的成员是由A 类定义的成员。
【讨论】:
嗨,简单来说,我们可以说所有 B 都是 A,而不是所有 A 都是 B。这就是整个继承的工作方式。它提供了所需的抽象。
【讨论】:
what are the fields and methods accessible by the object a 怎么样?你在哪里回答的?恕我直言,您的回答太笼统了。