重载和重写是什么
重载(overload):
重载是让类以统一的方式处理不同类型的手段。 体现为多个具有不同类型的参数或者参数个数的同名函数(返回值可以随意,不可以以返回值作为重载标准),同时存在与同一个类中,是一个类多态性的表现。调用方法时通过判断不同的参数个数和参数类型来决定调用那个函数。
重写(override)
是父类与子类的多态的体现,是对父类函数的重新定义。如果在子类中定义方法有何父类相同的****返回值类型,名称,参数列表。则父类方法被子类重写(覆盖)。如果需要调用父类的原有方法,则用super关键字。
总结重载和重写的相同与不同
相同:
1):方法名相同
2):表现了多态
不同:
1):重载在在一个类多态性的体现,而重写是子类和父类多态性的体现
2):重载参数类型必须不同,重写必须有相同的参数类型
3):重载方法返回类型可以不同(但是不作为重载标准),重写返回值类型必须有被重写方法相同。
4):重载可以抛出不同异常,写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。
5):重写访问修饰符的限制一定要大于等于被重写方法的访问修饰符
构造方法能否被重写呢?
重写是子类方法重写父类的方法,重写的方法名不变,而类的构造方法名必须与类名一致,假设父类的构造方法如果能够被子类重写则子类类名必须与父类类名一致才行,所以 Java 的构造方法是不能被重写的。而重载是针对同一个的,所以构造方法可以被重载。