假设B extends A
我们有一个声明A a=new B();
,通过超类变量引用子类对象有什么用?对象可以访问的字段和方法是什么a((仅子类方法和变量)或(来自子类和父类) )?
感谢你
假设B extends A
我们有一个声明A a=new B();
,通过超类变量引用子类对象有什么用?对象可以访问的字段和方法是什么a((仅子类方法和变量)或(来自子类和父类) )?
感谢你
原因是抽象。这个想法是你不需要知道关于物体的每一个微小的细节。例如,假设您正在开车。在大多数情况下,右边的踏板让你走得更快,左边的踏板让你放慢速度,而你面前的大圆形东西可以控制汽车。对于驾驶员(即用户)来说,这是如何发生的并不重要,但让这些细节正常工作以使汽车真正移动非常重要。
使用超类引用类型是你不必担心实现类(或特定类),比如List a = new ArrayList();
在这种情况下,只能访问超类公开的方法。
所以这主要是要实现:Polymorphism
以及Abstraction
。
主要原则是客户端针对更高标签接口进行编码,并且不担心低级实现。
这提供了在不更改客户端的情况下更改实现的灵活性。并且客户端还可以灵活地尝试多种实现。
在您的示例中,可从中访问的成员是该类a
定义的成员A
。
嗨,简单地说,我们可以说所有 B 都是 A,而不是所有 A 都是 B。这就是整个继承的工作方式。它提供了所需的抽象。