(面试题)重载和重写的区别

116 阅读1分钟
  • 重载:发生在一个类中,方法名相同,参数类型不同,个数不同,顺序不同。满足前面的条件后,方法的返回值和访问修饰符可以不同。
//方法名称相同,参数不同
class Student{
    void say(int a){
        System.out.println(a);
    }

    void say(String word) {
        System.out.println(word);
    }
}
  • 重写:发生在父类和子类之间,方法名和参数列表必须相同
    重写还有更细的点就是,返回值类型必须小于等于父类,抛出的一场必须小于等于父类,访问修饰符大于等于父类。
如果父类方法访问修饰符为private或者有final修饰,则不能重写该方法
//方法名称、参数必须完全相同
class People{
    void say(String word){
        System.out.println("People: " + word);
    }
}
class Student extends People{
    @Override
    void say(String word) {
        System.out.println("Student: " + word);
    }
}