关于java多态的理解

来源:互联网 发布:淘宝经营人贷款条件 编辑:程序博客网 时间:2024/06/06 11:38
public class Test1 {public static void main(String[] args) {b1 b = new b1();b1 a1 = new b1(); a1 a2 = new b1();   //这里是b1继承的a1满足多态的继承,同时满足了父类引用 指向子类对象,以及子类的@Override    /*** * 下面俩个就是区别一个是普通的实现,后者是多态 * 前者会直接返回b and b,因为前者是d继承的使b1而且b1继承至a1所以会到show(a1 obj) * 后者则是执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。这里他的实际类型是a1型的,所以他会找到b1 * 里面有没有 父类的重写有的话胡先执行子类里面的方法了,反之,则调用父类所对应的方法,这就是多态的动态绑定 */        System.out.println("A1:"+a1.show(b));          System.out.println("A2:"+a2.show(b));}}class a1{  public String show(d obj){            return ("a and d");     }        public String show(a1 obj){            return ("a and a A");     }   }class b1 extends a1{  public String show(b1 obj) {             return ("b and b");      }      public String show(a1 obj) {             return ("b and a");      }   }  class c extends b1 {}   class d extends b1{} 
0 0
原创粉丝点击