getIt()方法得到的是beta的子类对象Alpha,b是Beta对象,这是所谓的父类引用指向子类对象。这样得到的b,本身是Alpha对象,但是确实用父类对象引用的。这样的话,b对象虽然本身是Alpha,但是只能用其属于父类Beta中的属性和方法。而子类对象Alpha中的方法确实不能调用,你可以理解为虚拟机看不到属于Alpha 中的方法和属性,所以主函数调用的textIt()方法是错误的。如果想调用textIt()方法。需要在输出方法前加一个强制转换:Alpha a = (Alpha) b; 然后调用a.textIt()
14行 Beta b=getIt(); 就不对了吧 Beta是个接口类,在这里却当对象使用
50,684
社区成员
85,678
社区内容
加载中
试试用AI创作助手写篇文章吧