1、重写发生在父类与子类之间,重写必须有相同的方法名,参数列表和返回类型。重写的方法作用域必须大于等于原方法。重写方法不能抛出新的异常或者比被重写方法声明的检查异常更广的检查异常。但是可以抛出更少,更有限或者不抛出异常。(原来调用父类的地方,再调用子类抛出异常不能更大)静态方法可以重写和重载(都是static的)。
例子: 在父类中是public的方法,如果子类中将其降低访问权限为private, 那么父类在实现多态时如果调用子类的这个重写方法,但是这个方法已经是private,没有办法调用,所以就无法实现多态了。
2、方法重载发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。重载方法参数必须不同,返回值可相同可不同,作用域可相同可不同,参数相同返回值不同也不行,参数相同作用域不同也不行;
静态绑定:
在程序执行前方法已经被绑定,此时由编译器或其它连接程序实现。例如:C。
针对Java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,static,private和构造方法是前期绑定(private只有自己调用,静态方法与类相关)。
方法重载有静态方法重载和普通方法重载。静态方法重载是静态绑定,方法调用是通过:类名.方法。普通方法重载是动态绑定,方法调用是通过:实例对象引用.方法。构造器能够重载,但是不能够被重写。
静态方法能够被重写、重载,但是没有实现多态效果。