因为父类引用指向子类对象的时候,最后执行的是子类的方法.
其实并不矛盾,那是因为采用了后期绑定. 动态运行的时候又根据调用了子类的方法.
而假若子类的方法在父类中并没有定义,则会出错.
1个行为,不同的对象,他们具体体现出来的方式不一样,
比如:方法重载 overloading 以及 方法重写(覆盖) override
class person
{
void show()
{
输出 人在跑;
}
}
class man extends person
{
void show()
{
输出 男人在跑;
}
}
这个时候,同是跑,不同的对象,不一样 (这个就是覆盖,重写)
class person
void show(string s){输出s};
void show(int y){输出y};
这个例子是方法重载,方法名相同,参数列表不同