父类A,属性a1,方法a2,这个是在A.java中定义的。 子类B继承A,属性b1,方法b2,从A继承得到a1,a2 然后你用A a = new B(); 这行代码可以分为两步 1、A a; 定义了一个引用a,是类A的引用,所以a所拥有的只有a1和a2,这个时候还没有指向内存中的某个对象 2、a = new B();将类B的一个对象new B()指向引用a,这个时候有一个默认的向上转型,但是由于b1和b2是定义在B.java里的,与a无关,属于B自己拥有的,只有B的引用才可以使用,A的引用无权使用。 这个是在代码编译期就已经确定的,所以编译无法通过。
50,530
社区成员
85,610
社区内容
加载中
试试用AI创作助手写篇文章吧