B是A的子类,那么A a=new B();这样有什么意义

来源:学生作业学帮网 编辑:学帮网 时间:2024/04/25 21:34:48

B是A的子类,那么A a=new B();这样有什么意义

举个例子比如有这样一个方法:f(A a){a = new B();
a.method(); //method()也是父类A中的方法.}这样,运行时会动态绑定,程序自动调用子类B中相应的method()方法.在开发时这一点很有用处,设计时只需定义好接口f( A ),小组成员都依据这个定义编写f( A ).程序自己会动态的调用A的子类的相应方法,而不需为那些子类分别写一个f()函数.
比如:A表示平面图形基类.B,C,D分别为三角形、正方形、圆形类,都包含计算面积的area()方法.
f( A a )为一个计算涂一个平面图形所需的染料的质量.(设每单位面积用a克染料)
如果没有上述的多态机制,程序可能得这样写.
double f( B b) { return b.area()*a};
相应的还要写f( C c) ; f( D d)
在运行时 你传给他那个类型 就自动调用那个类型的相应的方法