0

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

感谢你

4

4 回答 4

1

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

于 2013-04-01T12:37:59.520 回答
0

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

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

于 2013-04-01T12:38:40.567 回答
0

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

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

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

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

于 2013-04-01T12:43:17.667 回答
-1

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

于 2013-04-01T12:38:51.667 回答