重载(Overload)和重写(Override)的区别?重载的方法能否根据返回类型进行区分?重载(Overload)和重写(Override)都是java开发经常用到但是却很容易混淆的知识点,尤其对新手尤为突出。同时重载重写也是最经常遇到的一个基础java面试题,不管原来知道不知道,现在告诉你,赶紧记牢面试无忧!
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。
重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。
重载规则:
* 被重载的方法必须改变参数列表(参数个数或类型不一样);
* 被重载的方法可以改变返回类型;
* 被重载的方法可以改变访问修饰符;
* 被重载的方法可以声明新的或更广的检查异常;
* 方法能够在同一个类中或者在一个子类中被重载。
* 无法以返回值类型作为重载函数的区分标准。
重写(Override)往往伴随重载同时出现,是新手同学必须牢牢掌握才能加以区分应用,我们在前面的文章:常见Java面试题之构造器是否可被重写有做简单的介绍,有兴趣的朋友可以看看,这里就不重复介绍。
以上是思博网络为广大奔走在面试以及学习阶段的java同行整理的关于Java 重写重载可能遇到的面试问题以及重要知识点,可能存在不足或者需要补充,您有什么观点和认识,欢迎指正补充,大家一起快乐学Java,高薪在就业!
如果遇到什么疑问或者困惑,可以联系我们,乐于与您分享讨论!
即刻预约
免费试听-咨询课程-获取免费资料