重载(Overload)和重写(Override)的区别?
答:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。
重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或参数顺序不同)则视为重载,重载对返回类型没有特殊的要求,不能根据返回类型进行区分。
重写发生在子类与父类之间,有时子类并不想原封不动的继承父类中的某个方法,而是在方法名、参数列表、返回类型(子类中方法的返回类型也可以是父类中返回类型的子类)都相同的情况下, 对方法体进行重写。要求子类被重写的方法与父类中被重写的方法有兼容的返回类型,比父类被重写方法更好访问(public>protected>default>private),不能比父类被重写方法声明更多的异常。