首页 > 代码库 > java多态

java多态

重载Overloading是一个类中多态性的一种表现;
重写Overriding是父类与子类之间多态性的一种表现。

重载和重写时,方法调用顺序的规则:
1 首先是看调用顺序:this.show(O)、super.show(O)、this.show((super)O)、super.show((super)O)、this.show(super((super)O))、super.show(super((super)O))。。。。。。直到找到符合的方法。

例:

类A
类B extend A
A a1 = new A();//this为A
A a2 = new B();//this为A
2 最后看子类有没有覆盖这个方法,如果子类重写了这个方法,则调用的是子类的。

例子:

class A{    public String show(D obj){          return ("A and D");   }    public String show(A obj){          return ("A and A");   }   }class B extends A{     public String show(B obj){             return ("B and B");      }      public String show(A obj){             return ("B and A");      } }  class C extends B{}   class D extends B{} public static void main(String[] args) {        A a1 = new A();        A a2 = new B();          B b = new B();          C c = new C();           D d = new D();           System.out.println("1- "+a1.show(b));           System.out.println("2- "+a1.show(c));            System.out.println("3- "+a1.show(d));            System.out.println("4- "+a2.show(b));           System.out.println("5- "+a2.show(c));        System.out.println("6- "+a2.show(d));            System.out.println("7- "+b.show(b));            System.out.println("8- "+b.show(c));             System.out.println("9- "+b.show(d));         System.out.println("10- "+a2.show(a1));         System.out.println("11- "+a1.show(c));         System.out.println("12- "+a1.show(d));     }
View Code

答案:

1- A and A
2- A and A
3- A and D
4- B and A
5- B and A
6- A and D
7- B and B
8- B and B
9- A and D
10- B and A
11- A and A
12- A and D

java多态