重载(Overload)
同一个类中多个方法有相同的方法名,但是参数列表不同(不考虑修饰符和返回值类型),可以调用同一个方法,传入不同参数实现相似的功能,调用时根据函数参数类型和个数进行调用。
两同:
①在同一类中
②方法名相同
一不同:
参数列表不同
例:
public class OverLoadTest {
public static void main(String[] args) {
OverLoadTest overLoadTest = new OverLoadTest();
overLoadTest.call();
overLoadTest.call(10);
overLoadTest.call(10, "男");
}
public void call() {
System.out.println("我是小明");
}
public void call(int age) {
System.out.println("我是小明,我"+ age +"岁了");
}
public void call(int age, String sex) {
System.out.println("我是小明,性别"+ sex +"我"+ age +"岁了");
}
}
运行结果:
重写(Override/Overwrite)
子类继承父类后,父类的方法功能满足不了子类的需求,子类有必要对继承的父类方法进行方法覆盖(注:父类的构造方法以及private修饰的私有方法不能被继承,也就不能被覆盖)在继承类中对父类的函数进行重新实现,方法名和参数列表相同,只是实现体不一样。
两同:
①方法名相同
②参数列表相同
两小:
①子类返回值类型小于等于父类返回值类型(注:返回值为基本数据类型时,必须相等)
②子类抛出的异常小于等于父类抛出的异常
一大:
子类访问控制修饰符大于等于父类访问控制修饰符
例:
//父类
public class Person {
private int age;
private String sex;
public void eat() {
System.out.println("吃饭");
}
public void work() {
System.out.println("打工");
}
}
//子类
public class Student extends Person{
String major;
public void work() {
System.out.println("学习");
}
}
//main
public class OverWriteTest {
public static void main(String[] args) {
Student student = new Student();
student.work();
}
}
运行结果为: