方法重载和方法重写在英文中分别是overload和override,很多人在学习java的过程中总是分不清重载和重写这两个方法,实际上,这两个方法还是有很大的差别了,真正理解了这两个方法后,区别自然就明了了。
方法重载要遵循的原则:两同一不同
(1)两同:同一个类中方法名相同
(2)一不同:参数列表(个数或类型)不同。
至于方法中的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系。
方法重写要遵循的原则:两同两小一大
(1)两同:方法名相同、形参列表相同;
(2)两小:子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;
(3)一大:是子类方法的访问权限应比父类方法的访问权限更大或相等。
总结:重载和重写方法虽然名字有些类似,但是他们之间有很少的联系,除了二者都是发生在方法之间,并要求方法名相同之外,没有太大的相似之处。重载主要发生在同一个类的多个同名方法之间,而重写发生在子类和父类同名方法之间。当然,父类方法和子类方法也可以发生重载,因为子类会获得父类的方法,如果子类定义了一个与父类方法有相同的方法名,但参数列表不同的方法,就会形成父类方法和子类方法的重载。