首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

有关多态的有关问题

2012-01-01 
有关多态的问题书上说:static 方法与final方法都不能进行后期绑定.也就不能发生多态.那为什么下面的这个程

有关多态的问题
书上说: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()吗?


[解决办法]
理解有问题
你 要考虑的是i.act();有没有多态,而不是调用的方法是不是static的
这跟test方法是否static无关,把两个act方法都修改成static看看
[解决办法]
你这里要测试的是override的方法(act方法)本身是不是static的,而不是调用act方法的方法(test)是不是static的

热点排行