首先我们要知道重载、重写、重构的区别
重载:指的是在同一个类中,方法名相同,但是参数数量、参数类型或者返回类型不同的方法就叫做重载。
重写:
重写分两种、第一种的是在子类继承父类的情况下,通过@Override注解,子类方法名、参数、返回值全部一样,方法体不一样的方法就是重写。
第二种就是接口实现,实现接口必须实现接口下的所有方法,因为实现方法上也有@Override注解,所以也算是重写的一种吧。
重构:重构就是在原有的代码上,进行优化,使代码执行速度更快、或者更简单易读。
重载的优点:
1、相同的方法名,传入不同的参数调用的方法就不一样。 简单来说,就是你需要调用哪个方法,就传入重载对应的参数。
代码如下:
1 public class Protected1 { 2 3 /** 4 * 调用重载方法 5 * @param args 6 */ 7 public static void main(String[] args) { 8 test1 test = new test1(); 9 // 在这里我们可以看到,调用的方法名都是一样的,只是传入的参数类型与数量不一样 10 test.Overload(); 11 System.out.println(test.Overload("重载2")); 12 test.Overload("重载2",3); 13 } 14 } 15 16 17 class test1{ 18 19 public test1() { 20 21 } 22 // 在这我们可以看到,方法名称都是一样的,只是方法中参数类型与数量不一样 23 public void Overload() { 24 System.err.println("重载1"); 25 } 26 27 public String Overload(String str) { 28 return "重载2"; 29 } 30 31 public void Overload(String str,int i) { 32 System.err.println("重载3"); 33 } 34 }
执行结果,代码复制即可运行
重写的优点
个人观点,如果是子类继承父类然后重写父类方法,和子类写的方法没什么区别,虽然说重写后子类要使用父类方法可以通过super点父类方法名就可以调用,但是何必要那么用呢。
但是接口就不一样了,一个实现类可以实现多个接口,增强类的重用性和复用性,扩展性;话不多说,直接看代码
public class Protected1 extends test1{ // 这里调用父类方法,我们可以看到,不用new 直接就可以使用了 public void test() { // 在这里我们可以看到,调用的方法名都是一样的,只是传入的参数类型与数量不一样 super.Overload(); // 利用super可以调用父类方法 Overload();// 重写方法之后调用的就是重写方法 System.out.println(Overload("重载2")); Overload("重载2",3); } //重写之后的方法 @Override public void Overload() { System.err.println("重写之后的方法"); } public static void main(String[] args) { Protected1 p = new Protected1(); p.test(); } } class test1{ // 在这我们可以看到,方法名称都是一样的,只是方法中参数类型与数量不一样 public void Overload() { System.err.println("重载1"); } public String Overload(String str) { return "重载2"; } public void Overload(String str,int i) { System.err.println("重载3"); } }