多态一般理解为编译与运行时的不同状态。
例如 LIst list = new ArrayList();
目前,我的理解为编译程序的时候,类中的成员变量,成员方法看左边 || 而在运行时,成员方法则看右边。
class A{
public String run(D obj){
return ("A & D");
}
public String run(A obj){
return ("A & A");
}
}
class B extends A{
public String run(B obj){
return ("B & B");
}
public String run(A obj){
return ("B & A");
}
}
class C extends B{}
class D extends B{}
A aa = new A();
A ab = new B();
B b = new B();
C c = new C();
D d = new D();
System.out.println(aa.run(b));//A & A
System.out.println(aa.run(c));//A & A
System.out.println(aa.run(d));//A & D
System.out.println(ab.run(b));//B & A
System.out.println(ab.run(c));//B & A
System.out.println(ab.run(d));//A & D
System.out.println(b.run(b));//B & B
System.out.println(b.run(c));//B & B
System.out.println(b.run(d));//A & D
可以看这个例子,比如: