重写(override)与重载(overload)

重写(override)

同一种东西随时随地都只有一种含义,只是原先的含义完全被后来取代了

重写(override)方法必须满足下列条件

1.子类方法的名称及参数必须和所覆盖的方法相同

2.子类方法的返回类型必须和覆盖的方法相同

3.子类方法不能缩小所覆盖方法的访问权限

4.子类方法不能抛出比覆盖方法更多的异常

重载(overload)

同一种东西在不同地方有多种含义

重载(overload)方法必须满足下列条件

1.方法名必须相同

2.方法的参数的个数或者类型必须不同,都相同的话则不是重载

3.方法的返回类型和方法的修饰符可以不相同

 

public class leetcode_testcase {
    //下面两个uniquePaths的参数不同,则为重载,不报错
    public int uniquePaths(int m, int n) {
        return 0;
    }
    public int uniquePaths(int m, int n,int y) {
        return 0;
    }    
}
public class leetcode_testcase {
    //下面两个uniquePaths的参数不同,为重载,不报错
    public int uniquePaths(int m, int n) {
        return 0;
    }
    public int uniquePaths(int m, int n, int y) {
        return 0;
    }
    //第三个uniquePaths函数与第二个uniquePaths函数只有返回值不同
    //则显示Duplicate method uniquePaths(int, int, int)的错误
    public float uniquePaths(int m, int n, int y) {
        return 1.0;
    }
}

 

public class overrideCase extends leetcode_testcase {
    //因为uniquePaths方法的参数和返回值与父类的uniquePaths方法相同
    //则overrideCase子类重写了父类leetcode_testcase的uniquePaths方法
    public int uniquePaths(int m, int n) {
        return 2;
    }
}

 

posted @ 2019-03-28 22:36  yanhowever  阅读(329)  评论(0编辑  收藏  举报