重载和覆写的区别,简述重载和重写的区别
一、覆写什么意思
“覆写”和“重写”是一样的,还有叫“覆盖”的,都是override,意思就是父类和子类中的同名同参数的方法,它们之间的关系就是,子类的方法把父类的方法给盖住了(其实不一定是父类,父接口也可以)。
比如动物是父类,人是子类,都有奔跑run()这个方法,人类能够不用四肢在地上奔跑,所以应该重写run()这个方法,让人类直立行走啊!
注意要和另一种区分的就是“重载”,即overload,这是同一个类中同名不同参的方法,它们之间的关系就是,你调用同一个名字,但是传递的是不同的参数,
比如求和sum方法,可以对int类型求和,也可以对double类型求和,这两个方法作用相同,所以起同样的名字。因此sum(intint)和sum(double,double)就是两个重载方法。
二、path环境方法重写跟方法重载的区别
其实很本质的区别就是看函数特征:覆写(Override)的两个函数的函数特征相同,重载(Overload)的两个函数的函数名虽然相同,但函数特征不同。函数特征包括函数名,参数的类型和个数。
Override是在继承的时候,如果你写的函数与要继承的函数函数特征相同,那么,加上这个关键字,在使用这个子类的这个函数的时候就看不见父类(或超类)的函数了,它被覆盖掉了。
比如:Derived继承了Base,Base里面有voidA(inta)那么如果你Derived里面觉得A写得不好或不适合这个类,你想重新再写一遍A里的代码,那么就写overridevoidA(inta)这样,原来的那个函数就被你新写的这个覆盖掉了。
Overload是重载,就是说函数名相同,函数特征不同,系统会根据你提供的参数来调相应的函数。
比如:voidA(inta)和voidA(inta,intb)如果你用的是A(1)那么调的是第一个,如果是A(1,1)那么调的是第二个。