黑马程序员技术交流社区
标题:
重写与重载 详细
[打印本页]
作者:
张海洋
时间:
2013-3-21 22:02
标题:
重写与重载 详细
重载(Overload)和重写(Override)的区别:
作者:
我自信我很牛
时间:
2013-3-21 22:16
JAVA中的覆盖override:
覆盖只会在类继承的时候才会出现,覆盖要求两个函数的名字和参数列表都完全一样。
覆盖override的注意事项:
1. 对于父类中的静态函数不可以覆盖。
2. 重写的方法不能降低父类方法的"可见度"。
3. 不能抛出新的异常或者父异常。
如下例:
class A{
static void m1(){System.out.println("父类A的方法m1");}
void m2(){}
// int m2(){}//错误,不能重载m2,参数列表一样
public void m3(int a){}
}
class B extends A{
// void m1(){}//不能重写A的m1为非静态方法
static void m1(){System.out.println("重写(Override)父类A的方法m1");}//重写静态方法
// private void m3(int a){}//重写错误,不能重写A的m3,因为降低了m3的可见性
void m2(){}//正确,重写父类A的m2,参数列表和返回值都一样
public void m3(){}//正确,重载父类A的m3,参数列表不同
void m4(){}
void m4(int a){}//正确,重载B的m4
void m5(double b){
System.out.println("Double Method "+b);
}
}
作者:
花伟昌
时间:
2013-3-21 22:30
重载(Overload):函数名相同,但是参数列表不同 如:参数个数、参数类型、参数的顺序。重载与函数的返回值无关。
重写(Override):函数的声明必须要完全一样 包括:函数名、函数参数列表、函数的返回值类型。而且函数的权限要大于或等于被重写的函数的权限。如果被重写的函数的权限为private 则不能重写。
作者:
施家雄
时间:
2013-3-21 22:31
1、类中可以创建多个方法,它们具有相同的名字,参数个数和类型不一样。它们就构成了“重载”。返回值类型可以一样,也可以不一样,但是不能把返回值类型作为判断是否重载的依据。
2、重写是父类和子类的多态性,在子类中定义的方法名称、参数、返回类型与父类中的相同的话,在子类中定义了新的功能,这样就实现了“重写”。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2