java

来源:互联网 发布:社交网络高清百度云 编辑:程序博客网 时间:2024/05/17 00:50
概念

  1、重写:看调用方法的对象:如果调用的是子类对象,则无论父类/子类引用类型,调用的都是重写后的方法,如果想调用父类的方法,用super.方法 来调;如果调用的是父类对象,则调用的是父类重写前的方法。

     2、区别:1)重写--父子类中,完全相同(签名相同)的方法。如何调用,取决于调用对象,而不是引用类型。

                  2)重载--同一个类中,方法名相同,参数列表不同的方法。调用取决于方法结构(有无参数)。  

  测试小程序

 1 package day02; 2  3 /** 4  * Created by Administrator on 17-5-25. 5  */ 6  7 public class OverRideTest { 8     public static void main(String[] args){ 9         B n = new B();  //子类对象10         n.a();11 12         A t = new B();  //向上造型,子类对象13         t.a();14 15         A x = new A();  //父类对象16         x.a();17     }18 }19 20 class A{21     void a(){22         System.out.println("A.a()");23     }24 }25 26 class B extends A{  //子类override27     void a(){28         System.out.println("B.b()");29     }30 }

 

 重写、重载

 1 package day02; 2  3 /** 4  * Created by Administrator on 17-5-25. 5  */ 6  7 //重载:编译时--无对象; 重写:运行时; 8 public class OverLoadTest { 9     public static void main(String[] args){10         Ao x = new Bo();  //向上造型11         Co m = new Co();12         m.c(x);13     }14 }15 16 class Ao{17     void n(){18         System.out.println("Ao");19     }20 }21 22 class Bo extends Ao{23     void n(){24         System.out.println("Bo");25     }26 }27 28 class Co{29     void c(Ao t){30         System.out.println("Co.c(x)");31         t.n();32     }33 34     void c(Bo t){35         System.out.println("Co.c()");36         t.n();37     }38 }