黑马程序员技术交流社区

标题: 巩固总结下JAVA中Override,Overload,Overwrite的区别 [打印本页]

作者: 古典牧童    时间: 2015-4-21 21:01
标题: 巩固总结下JAVA中Override,Overload,Overwrite的区别
方法的覆盖(Override)是指子类重写从父类继承来的一个同名方法(参数、返回值也同),此时子类将清除父类方法的影响,实现自身的行为。实在想用原来的,可以用super。

overload指同名方法,通过不同的参数样式共存,有时用这个,有时用那个。参数样式指,不同的参数类型,不同的参数个数,不同的参数顺序,返回值不起作用。

override和overload的提出,对于某些现象,大家定义了这两个名词以后,解释起来很容易。而overwrite显然不具备这种功效。学术名词的定义显然不如compiler更实力派,compiler说怎么样就怎么样。我们看看下面的一个实用的例子。此例子证明,compiler(编译器)一定是按照先子类,后父类,先精确匹配,后模糊匹配的顺序。

例1.5.3
class AAA {
double f(double x, double y) {
return x * y;
}
double f(int x, double y) {
return x * y*2;
}
}
class BBB extends AAA {
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);
/*如果没有准确匹配,就模糊匹配,还是按照从子类到父类的顺序*/
                 System.out.println(obj.f(4,6.0);
}
}


结果是:

48.0
10.0
。。。。。。。。。。。
作者: kolyneh    时间: 2015-4-21 21:32
顶一下,写的很详细啊





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2