所以我遇到了一个问题,两天来一直在绞尽脑汁想弄清楚,所以我想是时候寻求帮助了。
所以在这里我的问题是我有一个抽象类 B 扩展抽象类 A,我没有覆盖 B 中的任何方法或任何东西,而是指定更专业的行为、变量等。
现在这是我的问题所在,我有第三个类,比如说 C 类,它实现了所有正确的方法,可能覆盖了一些(我使用了@Override 符号,所以我知道它做得对),并且可能添加一些它自己的方法和变量。
现在这很好,但是当我尝试创建一个我想使用动态绑定的 A 类型数组时,我可以添加 C 类型的对象,或者像这样返回 A 的任何其他对象。
A[] AObjects = new A[3];
Aobject[0] = new C();
so on and so forth
现在可以说我有一个像 getNum(); 这样的方法。在只有 C 的 C 内部,它一直告诉我 getNum(); 当我尝试使用它时,它没有在类型 A 中定义。我错过了什么吗?因为据我了解,方法只在运行时绑定,所以我应该能够获取 A 类型的引用变量,并将其分配给 C 类型的对象,并能够调用 C 中的所有公共成员,正确的?还是数组的规则不同?
ps 我对变量使用protected,对我的方法使用public。
任何帮助将不胜感激!:) 谢谢