您的位置:首页 > 其它

重写(override),重载(overload),多态(polymorphism)

2015-06-25 22:07 232 查看
表面看起来似乎很容易混淆,其实区别很大,主要是使用场景不同。

1.重写,一般是用于子类在继承父类时。

父类和子类,只是函数内部的实现不一样,其他都必须一样。

2.重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。

最常见的例子,就是一个类有多个构造方法。再比如,一个形状类,其getSides方法根据具体形状比如三角,矩形而具有不同的输入输出参数。和其他类无关,只是自己类里的方法之间的关系。方法名称相同,参数个数、次序、类型不同,因此重载对返回值没有要求,可以相同,也可以不同。

3.多态。一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。对多态及重载两者比较,可以发现多态对重载的优点:

如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;

如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。

多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: