重写
重写是什么意思?有什么规则?
顾名思义就是把方法重新写一遍,什么时候写呢?子类继承父类方法时写。
1.发生在父类与子类之间
2.方法名,参数列表,返回类型,必须相同。简称同名同参
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(关于访问限定符的具体细节,另一篇博客有些。)
4非检查异常:重写方法可以抛出任何非检查的异常,无论被重写方法是否查明了该异常
5、检查异常:重写方法一定不能抛出新的检查异常,或比被重写方法声明的检查异常更广的检查异常
6、不能重写标志为final、static的方法
重载
重载 总结:
1、参数列表:被重载的方法必须改变参数列表
2、返回类型:可以改变返回类型
3、修饰符:可以改变修饰符
4、异常:可以声明新的或者更广泛的异常
5、重载Overload是一个类中多态性的一种表现
6、重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准
说了这么多,那面试官要是真问起来,我们该怎么回答呢?
重载是一个类,多个方法的方法名相同但是参数不同(与返回类型,修饰符无关)。重写是在子类和父类之间,子类的返回类型、方法名、参数、修饰符都与父类的方法一致,在继承的情况下才能谈重写。而重载是可以在任何环境下都可以使用的。两者都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。