假设B extends A
并且我们有一个声明A a=new B();
超类变量引用子类对象有什么用途?对象可以访问哪些字段和方法a((只有子类方法和变量)或者和父类))?在java中由超类变量引用的子类对象有什么用?
谢谢你
假设B extends A
并且我们有一个声明A a=new B();
超类变量引用子类对象有什么用途?对象可以访问哪些字段和方法a((只有子类方法和变量)或者和父类))?在java中由超类变量引用的子类对象有什么用?
谢谢你
原因是抽象。这个想法是,你不需要知道关于对象的每一个细微的细节。例如,假设你正在开车。大多数情况下,右侧的踏板会让你走得更快,左侧的踏板减慢了你的速度,而前方的大圆圈则让你驾驶车辆。发生这种情况对于驾驶员(也称为用户)来说并不重要,但是为了使车辆实际移动,这些细节正常工作是非常重要的。
是的,对于最重要的是,当你在B类中使用任何静态方法时,你需要使用该类的对象来访问属性,或者您的超类必须使用静态指定符来定义 – Pratik
使用使用超类引用类型的是,你不担心实现类(或特定类),如List a = new ArrayList();
只有超类暴露将是在这种情况下访问的方法。
嗨简而言之,我们可以说所有B都是A,而不是所有A都是B。这就是整个继承的工作原理。它提供了所需的abstarction。
您没有回答他的问题,但解释了什么是抽象。 – danieln
我的第一行回答了他的问题!阅读!! – NightsWatch
“对象a'可以访问哪些字段和方法呢?你是在哪里回答的?恕我直言,你的答案太笼统了。 – Pshemo
所以这主要是为了达到:Polymorphism
以及Abstraction
。
主要原因是客户端针对较高标签接口进行编码,不担心低层实现。
这可以灵活地更改实现而不更改客户端。客户端也可以灵活地尝试多种实现。
在您的示例中,将从a
访问的成员是由A
类定义的成员。
Google'java inheritance polymorphism'。你应该能够找到你的问题的答案。 –
看看这里http://stackoverflow.com/questions/10177523/using-superclass-to-initialise-a-subclass-object-java –