一 方法的重载
package com.atxiaoyao.method;
public class Test05 {
public static void main(String[] args) {
sum(1,2);
sum(1,2,3);
sum(1,2,3,4);
}
public static void sum(int a,int b){
int sum = a + b;
System.out.println("sum = " + sum);
}
public static void sum(int a,int b,int c){
int sum = a + b + c;
System.out.println("sum = " + sum);
}
public static void sum(int a,int b,int c,int d){
int sum = a + b + c + d;
System.out.println("sum = " + sum);
}
}
1. 重载定义
方法名相同,但是参数列表不同
例如上面 的代码,使用的是有参无返回值,针对的是三个sum方法
2. 什么是参数列表不同
①参数个数不同
②参数类型不同
③参数类型的顺序不同
3. 重载方法无关性
①和是否有返回值无关
②和参数名无关
4. 重载方法的使用场景
功能一样,但是实现细节不一样
二 方法的重写
1. 特征
①方法的重写和继承一起出现
②子类中存在和父类中相同的方法,方法名相同,参数列表一致
package com.atxiaoyao.method;
public class Parent {
public static void main(String[] args) {
move();
eat();
}
public static void move(){
System.out.println("动物会移动");
}
public static void eat(){
System.out.println("动物需要吃食物");
}
}
package com.atxiaoyao.method;
public class Child extends Parent {
public static void main(String[] args) {
move();
eat();
}
public static void eat(){
System.out.println("鸟吃虫子");
}
}
2. 方法重写注意事项
①方法名相同,参数列表一致
②子类的权限修饰符必须大于父类的权限修饰符
③子类的返回值类型必须小于等于父类的返回值类型
③子类抛出的异常要小于等于父类抛出的异常
3. 权限修饰符
public | protected | (default) | private | |
同类 | YES | YES | YES | YES |
同包 | YES | YES | YES | NO |
不同包的子类 | YES | YES | NO | NO |
不同包非子类 | YES | NO | NO | NO |
权限比较:public > protected > (default) > privated