JAVA基础(一)——重载(Overloading)与重写(Overriding)的区别

来源:互联网 发布:中国税务网络大学安装 编辑:程序博客网 时间:2024/06/08 08:10

重载(Overloading)和重写(Overriding)在Java中是两个基础的概念,下面就将详细的介绍它们的区别。

重载(Overloading)

Java是一种面向对象型语言,我们通常会在同一个类中定义多个方法,以便不同的对象去调用它,实现自己的需求。所谓重载就是在一个类中可以定义多个函数名相同 的函数,但是有不同的参数(参数的个数、参数的类型)和具体实现(implement)。下面通过一个具体的代码段来更具体的说明一下。

class Student {    void info(){        System.out.println("My name is Lucy");    }    void info(int a){        System.out.println("My name is Jack." +"My age is:"+a);    }}

Student类中定义了两个info方法,但是它们的参数列表是不一样的
假设调用第一个info方法,只是打印出一个固定的字符串。
假设调用第二个人info方法,不但打印出一个固定的字符串,而且将传入的参数a 也打印出来了。
我们将上面这个例子叫做方法的重载

此外,需要注意的是:只有返回值不一样的函数,并不能够完成函数的重载,在编译时会出现错误。
这又怎么理解呢,我们接着看一个简单的例子:

float min (int a,int b)int min (int a,int b)

上面我只是简单的写了两个函数头,并没有写函数体,但是这不影响我们分析问题。
当我们调用min(1,2);时,无法确定到底调用哪个,仅从函数返回值的不同是不能实现重载的。


重写(Overriding)

Java中的一大特性就是继承。
子类可以继承基类中的方法(使用super关键字访问父类中的方法),但是有时候根据实际需求会对基类中的方法做一定的重写(修改)。
重写后的方法要与原方法具有相同的方法名称、参数列表和返回类型。
继承中的重写方法的访问权限不能低于父类的权限。
同样我们也写一个简单的例子:

class Student {    void info(){        System.out.println("My name is Lucy");    }}class MiddleSchoolStudent extends Student{    void info(){        System.out.println("I have a lot of homework");    }}

定义了一个中学生类,它从学生类中继承。具有同样的info函数,但是它们的具体实现不同。这就是函数的重写
重载是发生在同一个类中的,而重写是发生在子类和父类中的。

阅读全文
1 0
原创粉丝点击