最近在技术分享的时候,说到了一个小点,重写和重载,顿时感觉自己基础忒差,于是拿出这两个词,再一次温习一下,总是区分不开,加上一直在学习java,所以就用java来写一些小例子。
重载(overloading)
重载用一句话总结就是:充分体现多态,函数名相同,参数不同,返回值不做要求。
例子:
package overloading;
public class Dog {
Dog(){
}
void Bark(){
System.out.println("no barking");
this.Bark("female",3.4);
}
void Bark(String m,double d){
System.out.println("a barking dog");
this.Bark(5,"china");
}
void Bark(int a,String n){
System.out.println("a howling dog");
}
public static void main(String[] args) {
Dog dog=new Dog();
//多态
dog.Bark();
dog.Bark(2, "sdfsd");
dog.Bark("sdf",2.2);
}
}
重写(overriding)
重写最重要的是子类继承父类,并可以在不改变父类方法名、参数、返回值的情况下进行重写,也叫方法覆盖。
紧接上面的例子:
package overloading;
public class subDog extends Dog {
@Override
void Bark() {
<span style="color:#ff0000;">int i;
System.out.println("重写父类方法");</span>
}
@Override
void Bark(String m, double d) {
// overriding
super.Bark(m, d);
}
@Override
void Bark(int a, String n) {
// overriding
super.Bark(a, n);
}
public static void main(String[]agrs)
{
Dog dog=new subDog();
dog.Bark();//重写方法
dog.Bark(5, "sdfsd");
dog.Bark("df", 2.52);
}
}
其实当我写完这篇博客时,我觉得重载与重写其实在平时经常用,但是当真正让我去说他们的时候,我区分不清,根源就在没有做到思想上移,对于实践和理论并没有很好的结合,对于基础知识的重视程度并不是太高,所以在今后的学习中,对于这些基础知识点的学习还是必须滴~