我写了这个,但我不明白这是什么。
Public ClassA { //some methods here } Public ClassB extends ClassA { Public static void main(String[] args) { ClassA abc=new ClassB //What is purpose of this line and what advantage it gives us. I accidently wrote this but compiler (Eclipse not generating any error on this statement). }
答案 0 :(得分:1)
您碰巧遇到了变量的静态和动态类型的区别及其与继承关系的连接。
您的变量abc
具有静态类型ClassA
。因此,编译器只允许您在该变量上使用该类中定义的方法。初始化abc
后,它具有动态类型ClassB
。
自ClassB extends ClassA
起,它具有ClassA
的所有方法和属性(可能更多),并且可以通过abc
使用。