重载与重写的区别
重载:
1、重载是由静态类型确定的,在类加载的时候就能确定,属于静态分派。
2、重载就是同一个类中方法名相同,但是参数类型或者个数或顺序不同,可以理解为一个类中的多态。
重写:
1、重写是由动态类型确定的,在运行时确定,属于动态分派。
2、动态分派是由虚方法表实现的,虚方法表里面存储的是每个方法的实际入口地址,如果子类没有重写父类的某个方法,那么这个方法在父类和子类的虚方法表中的地址相同,如果重写了,那么子类的虚方法表指向的是重写后的地址。
3、重写是针对于子类继承父类,子类重写父类的方法,由动态绑定实现。
4、子类方法的访问权限不能低于父类方法的访问权限。