重载和重写的区别
当面试再次复习这个知识点时,网上查阅后发现有些博客上写的是错误百出,和自己记忆中的完全对不上,所以自己通过查阅资料后将这个知识点整理出来供大家参考,如果有什么疑义的话,可以在下方评论区与我讨论交流。
重载(overload):编译时多态性
发生在同一类中,方法名相同参数列表不同(参数个数不同、参数类型不同、参数顺序不同),与修饰符、返回值类型、抛出异常无关,视为重载。
重写(override):运行时多态性
方法重写要遵循“两同两小一大”原则:
“两同”即方法名相同、形参列表小童。
“两小”指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;
“一大”指的是子类方法的访问权限应比父类方法的访问权限更大或相等。、
还有一个必须要注意,重写方法和被重写方法要么都是类方法,要么都是实例方法,不能一个是类方法,一个是实例方法。