最近在技术分享的时候,说到了一个小点,重写和重载,顿时感觉自己基础忒差,于是拿出这两个词,再一次温习一下,总是区分不开,加上一直在学习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); } }其实当我写完这篇博客时,我觉得重载与重写其实在平时经常用,但是当真正让我去说他们的时候,我区分不清,根源就在没有做到思想上移,对于实践和理论并没有很好的结合,对于基础知识的重视程度并不是太高,所以在今后的学习中,对于这些基础知识点的学习还是必须滴~