Java基础知识_重载与重写的区别
一、重载
重载是overload,存在于同一个类中,指的是一个方法与已经存在的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。方法返回值和访问修饰符可以不同。发生在编译时,另外值得注意的是,返回值不同,其他都相同不算是重载。
二、重写
重写是override,存在于继承体系中,发生在父子类中,方法名、参数列表必须相同,返回值范围小于等于父类,抛出异常范围小于等于父类,访问修饰符范围大于等于父类,如果父类访问修饰符为private则子类不能重写该方法。
可以使用@Override注解,可以让编译器帮忙检查是否满足上面的条件。
在调用一个方法的时候,先从本类中查找是否有对应的方法,如果没有找到吗,再到父类中查看是否有继承来的方法。否则就要对参数进行转型,转成父类之后看是否有相应的方法,总的来说,方法调用的优先级为:
this.function(this) super.function(this) this.function(super) super.function(super)
方法的重写override和重载overload是Java多态性的不同表现。重写是父类和子类之间多态性的一种表现,重载是一个类中多态性的一种表现。