日期:2014-05-20  浏览次数:20706 次

对于java 中多态的想不懂的地方,求指教




这里Manager类 是 Employee类 的子类
Staff[0] 和 boss 引用同一个变量,但编译器却将staff[0]看成Employee类(超类)对象。
但在调用 getSalary 这一方法时,staff[0]却调用的是 Manager类(子类)的方法。
这个不是有矛盾的地方吗?
还有,假如我在Manager类(子类)声明一个 public int a;(这个我知道是应该写private,这里只是想测试一下)这样一个 变量,假如已经赋值了a=10。 但我 想 System.out.println(staff[0].a) 却不能打印。这是为什么?


求各位指教。。。。

顺便问一个一直不太确定的问题。等于号=  什么时候 是用来赋值什么时候是 变量之间的引用?

------解决方案--------------------
对于赋值的对象是那么就是用来复制的,比如int=3;
int是基本数据类型,
如果是对象的话,那么就是变量之间的引用了。
比如
String s="ss";
String x=s;

另外楼主的问题其实就等于一个:
 Employee e=new Manager();