java

  概念

  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{  //子类override
27     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 }
原文地址:https://www.cnblogs.com/DeRozan/p/6902351.html