先看看我给重载和覆写下的定义对不对:覆写(overriding):指父类和自类具有相同方法名、相同参数个数和类型的方法。
重载(overloading):指一个类中具有相同方法名,但参数个数或类型不完全相同的方法。下面两个例子中的eat方法是重载么??
例一:
class Father{
public void eat(){...}
}class Son{
public void eat(Food f){...}
}例二:
class Father{
private void eat(){...}
}class Son{
public void eat(Food f){...}
}下面例三中的eat方法是覆写么??
例三:
class Father{
private void eat(){...}
}class Son{
public void eat(){...}
}

解决方案 »

  1.   

    例一:
    class Father{
    public void eat(){...}
    }class Son{
    public void eat(Food f){...}
    }例二:
    class Father{
    private void eat(){...}
    }class Son{
    public void eat(Food f){...}
    }
    这是在两个不同的类中,只有在同个类中才会是重载;
    例三:
    class Father{
    private void eat(){...}
    }class Son{
    public void eat(){...}
    }
    两个类之间要复写,必须要有继承关系,如果对父类不需要反复调用的话,一般会声明为虚函数
      

  2.   

    例一:
    class Father{
    public:
     void eat(){...}
    void eat(Food f){....}
    };class Son{
    public:
    void eat(){......}
     void eat(Food f){...}
    };例二:
    class Father{
    private void eat(){...}
    void eat(Food f){...}
    };class Son{
    public:
    void eat(){...}
     void eat(Food f){...}
    };
    这样就能实现重载.
    例三:
    class Father{
    public:
     virtual void eat(){...}
    };class Son:public Father
    {
    public void eat(){...}
    };
    这样就能实现复写
      

  3.   

    有继承关系 extends 就是
      

  4.   

    一个extends都没有,怎么override