方法重载与方法重写
一、方法重载
1、多个方法在同一个类中;
2、多个方法具有相同的方法名(功能相同);
3、多个方法的参数列表不同(数据类型、个数、顺序(类型不同)满足其一即可)
【注】方法重载与是否有返回值无关;在调用的时候,Java虚拟机会通过参数的不同来区分同名的方法。
public void sum(int a, int b) { System.out.println(a + b); } public void sum(double a, double b) { System.out.println(a + b); } public void sum(double a, int b) { System.out.println(a + b); } public void sum(int a, int b, int c) { System.out.println(a + b + c); }
以上代码属于方法重载。
public void sum(int a, int b) { System.out.println(a + b); } public int sum(int a, int b) { return a + b; }
注意这几行代码,不属于方法重载,会编译报错,报错如下图
报错的意思是MethodTest(这是我的类名)类中的sum方法重复,所以方法重载是与返回值无关的。
二、方法重写
1、方法是在两个类中,并且这两个类有继承关系;
2、方法名是相同的;
3、参数列表相同。
【注意】私有方法不能被重写(父类私有成员子类是不能继承的); 方法的返回值类型、方法名、参数列表都一致;对于访问权限符,子类的访问权限符要大于等于父类;对于异常,子类的异常小于等于父类。
public class Father { public void show() { System.out.println("父类的方法"); } }
public class Son extends Father { @Override public void show() { System.out.println("子类的方法"); } }
以上两个类中的方法便属于方法重写。
如何验证是不是方法重写?
在需要重写的方法上加注解@Override,这个注解就是检验方法是不是被重写的,如果不是,就会报错,比如我修改一下子类的方法
就会编译报错
注意点中的事项,大家可以用代码自行去验证。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
分享一个有意思的题,看看能不能诱导到你,答案会在评论区公布哦!!
最后,欢迎大家关注我的公众号呀