重写和重载的不同
区别点 | 重载 | 重写(覆写) |
---|---|---|
英文 | Overloading | Overiding |
定义 | 方法名称相同,参数的类型或个数不同 | 方法名称、参数类型、返回值类型全部相同 |
权限 | 对权限没有要求 | 被重写的方法不能拥有更严格的权限 |
范围 | 发生在一个类中 | 发生在继承类中 |
方法的重写(override)
所谓方法重写就是子类的方法和父类中继承下来的方法具有完全相同的方法名、返回值类型、方法的参数个数以及参数类型,这样才能被称为方法重写
// 父类的定义
public class Father_ {
public void eat() {
System.out.println("===== This is Father_'s eat function=======");
}
}
// 子类定义,使用 extends 继承父类
public class Student extends Father_ {
// 重写方法
@Override
public void eat() {
System.out.println("=====this is Student's eat function======");
}
// main方法测试
public static void main(String[] args) {
Student student = new Student();
student.eat(); // 输出:=====this is Student's eat function======
}
}
方法的重载(overload)
方法的重载就是:在一个类中,有一系列的方法具有方法名相同,但参数列表不同,这类方法的现就是方法重载。注意构造方法也可以重载
public class Person {
// 构造方法
public Person() {
System.out.println("这是无参构造方法");
}
public Person(String name) {
System.out.println("这是有一个参数的构造方法参数name=" + name);
}
// 方法名相同,参数不同
void print() {
System.out.println("====print function====");
}
void print(String str) {
System.out.println("====print function:"+str+"====");
}
void print(String str, int a) {
System.out.println("====print function:"+str,a+"====");
}
}