System.out.println(a1.show(b));
因为 B继承A 执行的是A方法内的 show(A obj) 传入的是B类 但是在运行过程中会转化为A类
System.out.println(a1.show(c));
因为 C继承B B继承A 执行的是A方法内的 show(A obj) 传入的是C类 但是在运行过程中会转化为A类
给你举个例子吧
List a = new ArrayList();
然后我有可以吧 List a 强转为Object类
一下我就不一一介绍 都是这个意思 有继承关系的话 子类可以强转为父类,转化后可以调用父类的方法