2个回答
展开全部
举个例子
class AA {
int num = 6;
int getNum() {
return num;
}
}
class B extends AA {
int num = 9;
int getNum() {
System.out.println(num);
return num;
}
public static void main(String[] args) {
AA a = new B();
System.out.println(a.getNum());
System.out.println(a.num);
}
}
看下输出结果是
9
9
6
变量是不支持动态绑定,方法是动态绑定的, a绑定的是 B类的方法 getNum()
但是我们在方法里面调用的参数指向的是this.num,也就是9,
所以调用的会是B里面的num, 也就是9
但是直接输出a.num的话, 编译时期就绑定了6 所以是6
class AA {
int num = 6;
int getNum() {
return num;
}
}
class B extends AA {
int num = 9;
int getNum() {
System.out.println(num);
return num;
}
public static void main(String[] args) {
AA a = new B();
System.out.println(a.getNum());
System.out.println(a.num);
}
}
看下输出结果是
9
9
6
变量是不支持动态绑定,方法是动态绑定的, a绑定的是 B类的方法 getNum()
但是我们在方法里面调用的参数指向的是this.num,也就是9,
所以调用的会是B里面的num, 也就是9
但是直接输出a.num的话, 编译时期就绑定了6 所以是6
2012-06-12
展开全部
子类中的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询