有关多态的问题

johnsoncr 2007-10-03 10:14:27
书上说:static 方法与final方法都不能进行后期绑定.也就不能发生多态.
那为什么下面的这个程序中的static方法可以多态呢?
class Father {
public void act() {
System.out.println("Father.act()");
}
}

class Son extends Father {
public void act() {
System.out.println("Son.act()");
}
}
public class Test {
public static void test(Father i) { //static方法
i.act();
}
public static void main(String[] a) {
Son son = new Son();
test(son);

}
} //输出结果为:Son.act(),如果static不能多态,那结果不就应该是Father.act()吗?
...全文
42 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
believefym 2007-10-03
  • 打赏
  • 举报
回复
你这里要测试的是override的方法(act方法)本身是不是static的,而不是调用act方法的方法(test)是不是static的
believefym 2007-10-03
  • 打赏
  • 举报
回复
理解有问题
你 要考虑的是i.act();有没有多态,而不是调用的方法是不是static的
这跟test方法是否static无关,把两个act方法都修改成static看看
huakai_yijian 2007-10-03
  • 打赏
  • 举报
回复
谢谢楼主了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧