Override,Overload,Overwrite到底有什么区别?

Override,Overload,Overwrite的区别【新手可忽略不影响继续学习】  

方法的覆盖(Override)是指子类重写从父类继承来的一个同名方法(参数、返回值也同),马克-to-win:此时子类将 清除父类方法的影响,实现自身的行为。实在想用原来的,可以用super。顺便说,overload指同名方法,通过不同的参数样式共存, 有时用这个, 有时用那个。参数样式指,不同的参数类型,不同的参数个数,不同的参数顺序,返回值不起作用。再顺便说,比较权威公开的著作,都支持overwrite在java中不 存在的说法。我们看看下面的一个实用的例子。此例子证明,compiler(编译器)一定是按照先子类,后父类,先精确匹配,后模糊匹配的顺序。

例1.5.3---

class AAAMark_to_win {
    double f(double x, double yMark_to_win) {
        return x * yMark_to_win;
    }
    double f(int x, double y) {
        return x * y*2;
    }
}
class BBB extends AAAMark_to_win {
    double f(double x, double y)
    {
        return x + y;
    }
}
public class Test {
    public static void main(String args[]) {
        BBB obj = new BBB();
/*找参数的准确匹配, 子类中没有, 就去父类中找*/        
        System.out.println(obj.f(4, 6.0));
/*如果没有准确匹配, 就模糊匹配(强转一下),马克-to-win:还是按照从子类到父类的顺序*/        
        System.out.println(obj.f(4.0, 6));
    }
}

更多内容请见原文,原文转载自:https://blog.csdn.net/qq_44639795/article/details/103118060

posted @ 2021-01-22 15:46  师徒行者  阅读(642)  评论(0编辑  收藏  举报