Java中,overload与override的区别

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。否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

你可能感兴趣的:(Java,java,overload,override)