B是A的子类,那么A a=new B();这样有什么意义
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/24 05:51:24
![B是A的子类,那么A a=new B();这样有什么意义](/uploads/image/z/5209333-61-3.jpg?t=B%E6%98%AFA%E7%9A%84%E5%AD%90%E7%B1%BB%2C%E9%82%A3%E4%B9%88A+a%3Dnew+B%28%29%3B%E8%BF%99%E6%A0%B7%E6%9C%89%E4%BB%80%E4%B9%88%E6%84%8F%E4%B9%89)
B是A的子类,那么A a=new B();这样有什么意义
B是A的子类,那么A a=new B();这样有什么意义
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)
在运行时 你传给他那个类型 就自动调用那个类型的相应的方法