2013-04-01 73 views
0

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

谢谢你

+1

Google'java inheritance polymorphism'。你应该能够找到你的问题的答案。 –

+0

看看这里http://stackoverflow.com/questions/10177523/using-superclass-to-initialise-a-subclass-object-java –

回答

1

原因是抽象。这个想法是,你不需要知道关于对象的每一个细微的细节。例如,假设你正在开车。大多数情况下,右侧的踏板会让你走得更快,左侧的踏板减慢了你的速度,而前方的大圆圈则让你驾驶车辆。发生这种情况对于驾驶员(也称为用户)来说并不重要,但是为了使车辆实际移动,这些细节正常工作是非常重要的。

+0

是的,对于最重要的是,当你在B类中使用任何静态方法时,你需要使用该类的对象来访问属性,或者您的超类必须使用静态指定符来定义 – Pratik

0

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

只有超类暴露将是在这种情况下访问的方法。

-1

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

+0

您没有回答他的问题,但解释了什么是抽象。 – danieln

+0

我的第一行回答了他的问题!阅读!! – NightsWatch

+1

“对象a'可以访问哪些字段和方法呢?你是在哪里回答的?恕我直言,你的答案太笼统了。 – Pshemo

0

所以这主要是为了达到:Polymorphism以及Abstraction

主要原因是客户端针对较高标签接口进行编码,不担心低层实现。

这可以灵活地更改实现而不更改客户端。客户端也可以灵活地尝试多种实现。

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

相关问题