您的位置:首页 > 编程语言 > C语言/C++

java重载/重写(覆盖)/重构比较及其与C++差异

2016-07-09 17:49 344 查看
最近在学习java,与c++还是有一定的不同,下面分别比对一下比较容易混淆的重载、重写、重构,及其与C++的差异。

关于c++中重载、覆盖和隐藏参考:http://blog.csdn.net/zhangjikuan/article/details/38447265

                                                        http://blog.csdn.net/zhangjikuan/article/details/38437851

java:

   重载:java中的重载和c++相同

             作用范围:同一个类中

             具体:同一个类中的方法名字相同,参数不同的就叫重载,例如一个类中经常会有多个构造函数,其中这多个构造函数构成的就是重载

             注:构造函数是个特例,因为构造函数没有返回值,还有一种情况就是其他的都相同(函数名和参数),但是返回值不同会不会构成重载?

                    不能,因为重载的由来是根据函数参数的不同来调用不同的方法,但是名字和参数相同返回值不同这样在调用的时候就不知道调用的是哪个方法,从而不能够成重                           载。

   重写(覆盖):c++中没有这个概念,重写也叫覆盖,对应的是c++中的隐藏,覆盖c++中有,但是与c++的覆盖相差比较大。

           作用范围:基类与派生类中

           具体:派生类中的函数名字与父类中的函数的名字相同,但是返回值、或修饰权限、或参数不同

           区别:c++中的隐藏还多了一种情况是virtue关键词

  重构:重构是java的重点,因为重构形成多态,对应的是c++中的覆盖

         作用范围:基类和派生类中

         具体:基类和派生类中的函数名参数返回值都相同,只有函数体不同,是形成多态的基础

         区别:比c++中覆盖要简单,因为c++中覆盖必须基类函数是虚函数,java这边重构不考虑什么虚函数,
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: