方法的重载
* 重载就是在一个类中,有相同的函数名称,但形参不同的函数。
* 方法的重载的规则:
* 方法名称必须相同。
* 参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。
* 方法的返回类型可以相同也可以不相同。
* 仅仅返回类型不同不足以成为方法的重载。
* 实现理论:
* 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对
应的方法,如果匹配失败,则编译器报错。
* 实例:
public class Demo03 {
public static void main(String[] args) {
int add = add(1, 2, 3);
System.out.println(add);
double add1 = add(1.2, 2.3);
System.out.println(add1);
}
public static int add(int a, int b) {
return a + b;
}
public static double add(double c, double d) {
return c + d;
}
public static int add(int a, int b, int c) {
return a + b + c;
}
}
方法的重写
* Java程序中类的继承特性可以产生一个子类,子类继承父类就拥有了父类的非私有的属性(方法和变量),在子类中可以增加自己的属性(方法和变量),
同时也可以对父类中的方法进行扩展,以增强自己的功能,这样就称之为重写,也称为复写或者覆盖。所谓方法重写就是子类的方法和父类中继承下来的方
法具有完全相同的方法名、返回值类型、方法的参数个数以及参数类型,这样才能被称为方法重写。
* 重写规则:
1.子类方法的参数列表必须和父类中被重写的方法的参数列表相同(参数个数和参数类型),否则只能实现方法的重载。
2.子类方法的返回值类型必须和父类中被重写的方法返回值类型相同,否则只能实现方法重载。
3.在Java规定,子类方法的访问权限不能比父类中被重写的方法的访问权限更小,必须大于或等于父类的访问权限。
4.在重写的过程中,如果父类中被重写的方法抛出异常,则子类中的方法也要抛出异常。但是抛出的异常也有一定的约束--->子类不能抛出比父类更多
的异常,只能抛出比父类更小的异常,或者不抛出异常。例如:父类方法抛出Exception,那么子类就只能抛出IOException或者抛出比Exception小
的异常或者不抛出异常。
* 实例:
public class Person {
public void say(){
System.out.println("Person说话");
}
}
public class Student extends Person {
@Override
public void say() {
//super.say();
System.out.println("Student读书");
}
public static void main(String[] args) {
Student student = new Student();
student.say();
}
}
* 运行结果:Student读书
* 可以看出:子类重写父类的方法后,在实例化子类的时候则调用的是子类中的方法,父类的方法就如同被覆盖了一样。如果在子类中需要调用父类的方法,
则在子类方法中使用super关键字调用父类的方法,格式:super.父类中的方法名(参数列表)。