|
|
多态是面向对象的三大基石之一(继承、多态、封装)。 多态分为编译时多态和运行时多态。 编译时多态即在编译时期就确定了对具体方法体的调用。 运行时多态是在运行时才最后确定对具体方法的调用,因为运行时多态我们才可以采用基于接口编程的方法来设计和编码, 有些设计模式也是以多态为基础的。 下面的讨论的都是运行时多态。 多态的几点说明:多态是针对方法调用而不是变量访问。 多态是针对继承体系结构而言的。 规则:对一个方法的调用是基于具体调用对象而不是引用。 对于该方法调用所引起的一系列调用(针对继承体系结构中的整个调用链),都是基于该调用对象的。下面是一个实例:
public class Override extends Father { private int count=0;
public int getCount() { count++; System.out.println("son's getCount()="+count); return count; }
public void overRideMethod(){ super.overRideMethod(); }
public static void main(String[] args) { new Override().overRideMethod(); }
}
class Father { public int getCount() { System.out.println("father's getCount()"); return 0; }
public void overRideMethod() { getCount(); //最终调用哪个getCount方法要看是哪个对象引起的该调用 } }
|
|
|
评论人:challengehope
|
发表时间: Tue May 27 22:07:40 CST 2008
|
我来加一条规则: 重载是编译时多态,重写是运行时多态。
|
|
|
评论人:liuchenyu
|
发表时间: Wed May 28 14:54:36 CST 2008
|
|
顶一下
|
|
|
评论人:donghong82
|
发表时间: Tue Jun 03 18:08:21 CST 2008
|
评论人:challengehope 发表时间: Tue May 27 22:07:40 CST 2008 我来加一条规则: 重载是编译时多态,重写是运行时多态。
说法不对.
|
|
|
评论人:fhyak47
|
发表时间: Wed Aug 13 22:44:34 CST 2008
|
|
支持一下
|
|
|