Java学习笔记17---方法的重载与重写

重载是指,一个类中定义了一个成员方法后,通过修改参数个数、参数类型或参数顺序,重新实现该方法,则这两个方法互为对方的重载方法。

重写是指,子类重新实现父类的成员方法。

 

重载后的方法,与原方法相比:

(1).方法名相同,参数个数、参数类型及参数顺序至少有一个不同;

(2).返回值类型与访问权限修饰符可以相同也可以不同,只修改这两项不能算重载;

(3).静态成员方法也可以重载,重载后的方法也可以是非静态成员方法;

(4).可以有多个重载方法。

 

子类重写后的方法,与父类的方法相比:

(1).方法名、参数个数、参数类型及参数顺序必须一致;

(2).返回值类型为基本数据类型时,不可以修改,返回值为类类型时,可以修改,具体参见笔记13;

(3).访问权限修饰符可以修改也可以不修改,如果修改的话,必须要大于父类方法的访问范围;

(4).静态成员方法也可以重写,但重写后的方法只是被隐藏,并未覆盖父类的方法,具体参见笔记12;

(5).一个子类只能重写父类的某个成员方法一次,否则,子类就会出现重名方法,会报错。

 

 重载是同一个类内部的多个成员方法互为重载方法,重写是子类的成员方法重写了父类的成员方法;重载一般是为了创建一组要完成相似任务的成员方法,重写的目的是为了实现多态,实现多态有3个条件:继承、重写、向上转型,缺一不可。

 

作者: 蝉蝉

请尊重作者劳动成果,转载请在标题注明“转载”字样,并标明原文链接:

 

下面是简单的程序示例。

Person类是Student类的父类,TestMain类是测试类,具体代码如下:

Person类的代码:

package human; public class Person { String name; int age; String gender; public Person() { } //笔记17:重载:方法名不变,参数的个数、类型及顺序至少与原方法有一个不同 //可以更改返回值类型及访问权限修饰符,但不是必须的,只修改这两项也不算重载 public int overLoadP(int i, String s) { System.out.println("i = " + i + ", " + s); return i+1; } // public char overLoadP(int i, String s) { // return i+1; // } //可以更改返回值类型及访问权限修饰符 protected char overLoadP(int i) { System.out.println("i = " + i); return (char)(i+2); } public int overLoadP(int i, int n) { System.out.println("i = " + i + ", n = " + n); return i+n; } public int overLoadP(String s, int i) { System.out.println(s + ", i = " + i); return i; } static void overLoadPS() { System.out.println("静态成员方法可以重载吗"); } void overLoadPS(int i) { System.out.println("静态成员方法可以重载"); } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzpjjz.html