重写与重载总结

来源:互联网 发布:php判断微信是否关注 编辑:程序博客网 时间:2024/06/05 18:58

       优效学院,名师执教,学习更优效,IT在线教育领导者。三人行必有我师,人生是需要不断学习的,在这里我们相遇就是缘分,欢迎大家加群----四六零五七零八二四----让我们共同进步!希望各位可以看完这篇文章,也欢迎大家在下面留言讨论,天冷了,也动动手指转发收藏一下,谢谢大家!

     

       重写    

​       重写是子类对父类的允许访问的方法的实现过程进行重新编写,返回值和形参都不能改变。重写的好处在于子类可以根据需要,定义特定于自己的行为。也就是说子类能够根据需要实现父类的方法。

      重写规则     

      当子类对象的重写方法被调用时,无论时通过子类的引用调用还是通过父类的引用调用,运行的是子类的重写后的版本。

      参数列表必须完全与被重写方法的相同;

      返回类型必须完全与被重写方法的返回类型相同;

      访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected

        声明为final的方法不能被重写。

        声明为static的方法不能被重写,但是能够被再次声明。

      子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为privatefinal的方法。

        子类和父类不在同一个包中,那么子类只能够重写父类的声明为publicprotected的非final方法。

         构造方法不能被重写。

重载

      重载是在一个类里面,方法名字相同,而参数不同,返回类型可以相同也可以不同。

      重载规则:

      被重载的方法必须改变参数列表(参数个数或类型或顺序不一样)

      被重载的方法可以改变返回类型;

      被重载的方法可以改变访问修饰符;

        被重载的方法可以声明新的或更广的检查异常;

        方法能够在同一个类中或者在一个子类中被重载。

另外关于重载和重写,你应该知道以下几点:

        1、重载是一个编译期概念、重写是一个运行期间概念。

         2、重载遵循所谓“编译期绑定”,即在编译时根据参数变量的类型判断应该调用哪个方法。

         3、重写遵循所谓“运行期绑定”,即在运行的时候,根据引用变量所指向的实际对象的类型来调用方法

        4、因为在编译期已经确定调用哪个方法,所以重载并不是多态。而重写是多态。重载只是一种语言特性,是一种语法规则,与多态无关,与面向对象也无关。(注:严格来说,重载是编译时多态,即静态多态。但是,Java中提到的多态,在不特别说明的情况下都指动态多态)

        最后,如果想有一群“臭味相投”的朋友来一起交流学习的话,欢迎大家搜索群460570824,让我们共同进步!