日期:2014-05-18  浏览次数:20731 次

方法的重写与重载有什么区别
方法的重写与重载有什么区别 ???最好给个简单的例子说明一下 空口说很难理解

------解决方案--------------------
重写 父类的方法,自己看多态
重载 同名 ,不同参数,如下
private void Add()
{
}
private void Add(int i,int j)
{
}
------解决方案--------------------
在C++时代,静态联编使得方法重写用到了方法重载,因为C++的一些编译器会将this指针作为参数传递给成员函数,而所谓的成员函数,其实就是普通的函数:
C/C++ code
class A
{
    public: void foo(int x) { }
};
class B : public A
{
    public: void foo(int x) { }
};

------解决方案--------------------
重写 是父类和子类之间的同名方法的一种关系
重载 是单个类内部的各种同名方法的一种关系

重写 的方法的签名必须完全一致
重载 的方法的签名可以不一致
------解决方案--------------------
但是C++不但支持静态联编,还支持动态联编。
动态联编的实质是借助一个“虚函数表”,在程序运行的时候判断应该执行哪一个函数:
C/C++ code
class A
{
    public: virtual void foo(int x) { }
};
class B : public A
{
    public: virtual void foo(int x) { }
};