关于A a = new B()

来源:互联网 发布:腾讯微云网盘for mac 编辑:程序博客网 时间:2024/05/01 23:32

首先这是对象实例化的一种方式。其中没给出的条件是B是继承于A的。
需要注意的是,这里的a并不是A的实例,而是B的实例。但是为什么这么表示呢?
在进行多态操作时,我们会用很多的子类继承一个父类,而子类一般都会重写父类中的类,但是却不是全部重写,只重写部分类。
例如,父类为Class animal,并且具有吃肉,吃草等方法。而子类分别为猫,狗,牛等,但是牛是不吃肉的,所以他不会重写吃肉这个方法。但是万一我们的子类太多,我们记不清是否重写了某个类,这时候这种写法就显得很有用了。
这时我们用Animal a = new niu()来实例化的话,我们先查找吃草的方法时,由于牛这个类中重写了吃草的方法,所以调用的是牛.吃草()的方法,如果我们找吃肉的方法,那么这时调用的就是animal.吃肉()的方法。

总结来说

如果A有两方法: a1 a2 , B重载了其中一个a2 , 那么a.a1() 执行A.a1, a.a2()执行B.a2()

这是笔者认为最简单的解释了。

0 0
原创粉丝点击