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这边重构不考虑什么虚函数,
关于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这边重构不考虑什么虚函数,
相关文章推荐
- C语言中的进制转换 itoa & sprintf
- C++类构造函数初始化列表
- C++中的explicit
- CrackingtheCodeInterview之C与C++
- c语言中字符指针与字符数组的区别
- c++ stl 学习
- 全排列 和 C++ string类 NYOJ 19
- POJ - 2230 Watchcow
- C以及C++语言中static作用
- C++中引用的本质
- c++中char *与string之间的相互转换及原理
- 1.C++ STL基本容器的使用(转载)
- C++的运算符重载 (转)
- C语言文件操作详解
- 【Effective C++读书笔记】篇六(条款13~条款15)
- 详解C语言可变参数va_list和vsnprintf及printf实现
- C++ 字符char相关操作
- STL--C++中 destory() 和deallocate()以及delete函数的相关性和区别性,destorydeallocate
- C&C++学习笔记2
- Tyvj 1066 合并果子