//请关注一下吧,这个问题好多人都没有解决得了,急急急..........!
public class aa
{
protected int num=99;
protected String sex= "女 ";
void jj(aa f)
{
System.out.println(f.sex);
System.out.println(f.num);
System.out.println(f.getClass().getName());
}
}
class bb extends aa
{ protected int num=521;//标签一
protected String sex= "男 ";
bb()
{
num=88;
}
public static void main(String args[])
{
bb b=new bb();
aa a=new aa();
a.jj(b);
}
}
/**********************************************************************************
上面的程序:如果说void jj(aa f)接收到的f是bb类的实例那么:f.sex=男 ,f.num=88 f是bb类实例
如果说void jj(aa f)接收到的f是aa类的实例那么:f.sex=女 ,f.num=99 f是aa类实例
但是结果却输出:f.sex=女,f.num=88,f是bb类的实例.
唉,我不说那么多了.我只想问一个问题.
就是说:此时void jj(aa f) 接收到的f是谁的实例对象.还有就是f所继承的范围.
还有就是无论a.jj(b);还是a.jj(a);传递任意的一个.此时void jj(aa f) 接收到始终是一个
实例即aa类的实例这样说对吗?
***********************************************************************************/
------解决方案--------------------我的理解,仅供参考~!
void jj(aa f) 传递的是 aa 的实例变量
bb b=new bb();
aa a=new aa();
a.jj(b);
bb是aa的子类
a.jj(b);这个时候 b就会向上转型为aa
System.out.println(f.sex);会调用 aa中的成员变量;
bb中的
protected int num=521;//标签一
protected String sex= "男 ";
并不会重写aa的成员变量
也就是说 多态是体现在方法上而不是变量上
总结以下几点:
1、对于实例变量和静态变量,多态机制反应的是“超类的属性”。
2、对于静态方法,多态机制反映的是“超类的属性”。
3、对于实例方法,多态机制反应的是“子类的属性”。
不知道说清没有..........
------解决方案--------------------bb 的构造函数只给num附值,所以num是88,sex调用父类的值。
------解决方案--------------------受不了了
XX年年有 今年特别多
------解决方案--------------------我执行的结果怎么是:
女
99
test.BB
~~~~~~
------解决方案--------------------我在JDK1.5测试结果,不注释掉是:
女
99
bb
注释掉是:
女
88
bb
我的理解是:没有注释的时候,bb类的num覆盖了bb的num,而aa的num被隐藏没有被改写。
注释后是bb继承了aa的num,这时bb类改写的是继承而来的num。
------解决方案--------------------daniel_kaka()
顶你
------解决方案--------------------insiku(tmd 结帖啊!!!) ( ) 信誉:100 Blog 加为好友 2007-4-16 10:13:18 得分: 0
受不了了
XX年年有 今年特别多
---------------------------
基本同意
------解决方案--------------------void jj(aa f) 传递的是 aa 的实例变量
。。。。。。。。。。。。。
受不了了
XX年年有 今年特别多
---------------------------
基本同意
传的是引用不就得了
------解决方案--------------------顶
------解决方案--------------------说实在的,LZ问得很好,但如果LZ是个“正常的Java语言使用者”
就不应该问这类问题,如果LZ是“Java语言编译器的恶魔”强烈建议
你去看看javac源码,一定能找到你想要的答案。