Java的overload(重载)与override(重写,覆盖)的区别
一,overload(重载)
1,overload(重载)表示同一个类中可以有多个名称相同的方法,但是这些方法的参数列表各不相同(即不同的参数类型,不同的参数个数,不同的参数顺序,)。overload可以改变返回值类型。
2,重载是一个类中多态性的一种表现。
例如:
public void m1(int x)
{ }
public int m1(int x, int y)
{
return x+y;
}
public String m1(int x, int y,int z)
{
return "abc";
}
public String m1(int x, String str)
{
return "chongzai2";
}
2,overload(重载的特点)
第一:不能通过访问权限,返回类型,抛出的异常进行重载;
第二:方法的异常类型和数目不会对重载造成影响的;
第三:对于继承来说,如果某一个方法在父类中的修饰符是private,那么就不能在子类对其进行重载了。如果要定义的话,也只是定义了一个新方法。
二,override(覆盖,重写)
1,override(重写)是父类与子类之间多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写了。子类的对象(实例)使用了这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。
2,override(重写)的程序:
import java.util.*;
class A{ //父类
public int getVal()
{
return 5;
}
}
class B extends A{ //通过子类对父类抽象方法的覆盖来实现多态,
public int getVal()
{
return 10;
}
}
public class Test3{
public static void main(String []args)
{
B b=new B(); //通过子类创建的实例对象,调用
A te=(A)b;
int x=b.getVal();//调用这个方法,将调用子类中的定义方法。
System.out.println(x);
}
}
返回的结果为: 10
3,override(重写)的特点:
第一:覆盖的方法的返回值必须和被覆盖的方法返回一致;
第二:覆盖的方法抛出的异常必须和被覆盖方法的所抛出的异常一致,或者是其子类。
第三:被覆盖的方法不能被定义为private。否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。