重写(override),重载(overload),多态(polymorphism)
2015-06-25 22:07
232 查看
表面看起来似乎很容易混淆,其实区别很大,主要是使用场景不同。
1.重写,一般是用于子类在继承父类时。
父类和子类,只是函数内部的实现不一样,其他都必须一样。
2.重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
最常见的例子,就是一个类有多个构造方法。再比如,一个形状类,其getSides方法根据具体形状比如三角,矩形而具有不同的输入输出参数。和其他类无关,只是自己类里的方法之间的关系。方法名称相同,参数个数、次序、类型不同,因此重载对返回值没有要求,可以相同,也可以不同。
3.多态。一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。对多态及重载两者比较,可以发现多态对重载的优点:
如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;
如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。
多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。
1.重写,一般是用于子类在继承父类时。
父类和子类,只是函数内部的实现不一样,其他都必须一样。
2.重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。
最常见的例子,就是一个类有多个构造方法。再比如,一个形状类,其getSides方法根据具体形状比如三角,矩形而具有不同的输入输出参数。和其他类无关,只是自己类里的方法之间的关系。方法名称相同,参数个数、次序、类型不同,因此重载对返回值没有要求,可以相同,也可以不同。
3.多态。一般,我们使用多态是为了避免在父类里大量重载引起代码臃肿且难于维护。对多态及重载两者比较,可以发现多态对重载的优点:
如果用重载,则在父类里要对应每一个子类都重载一个取得边数的方法;
如果用多态,则父类只提供取得边数的接口,至于取得哪个形状的边数,怎样取得,在子类里各自实现(重写)。
多态的概念比较复杂,有多种意义的多态,一个有趣但不严谨的说法是:继承是子类使用父类的方法,而多态则是父类使用子类的方法。
相关文章推荐
- 时间类的运算符
- 手斧Linux – 从LFS到Funtoo (54)
- codeforces #309 553B B. Kyoya and Permutation(斐波那契数)
- 程序员果真有前端后端客户端吗
- 牛腩新闻系统(五)——一些小技巧
- ProgressDialog show()的时候 12-18 11:05:55.356: E/AndroidRuntime(461): android.view.WindowManager$Ba
- iOS开发面试题(更新中...)
- 黑马程序员-IOS学习笔记(二)常用关键字和方法
- 库和框架的区别
- 手斧Linux – 从LFS到Funtoo (53)
- 写的手机安全卫士程序, 当服务器没有开启.程序执行到if(conn.getResponseCode() == 200)即conn.getResponseCode()时没反应了.
- 虚拟机中Centos7搭建本地仓库
- 分页插件之--kaminari
- . Refer to Hibernate 3.6 Migration Guide!
- BNUOJ 27935 我爱背单词 (加强版) (FFT)
- 笔记
- 从首份“电商职场报告”能看出什么
- 轻量级和企业级的区别
- IOS 第三方管理库管理 CocoaPods
- 虚基类——动物