Java重写与重载、静态绑定与动态绑定

来源:互联网 发布:算法统宗中的所有题目 编辑:程序博客网 时间:2024/05/16 00:42
重写(Override):
(1)父类与子类之间的多态性,对父类中的方法进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,
我们说该方法被重写了(Overriding)。在Java中,子类可继承父类的方法,而不需要重新编写相同的方法。但有时父类
中的方法满足不了子类的需求时,这就需要进行方法重写了。
(2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类
中的原有方法,可使用super关键字进行调用。
重写方法只能存在于具有继承关系的类中,重载方法发生在用一个类中。
重写方法的规则:
1、参数列表必须完全与被重写的方法相同,否则不能称为重写而是重载。
2、返回的类型必须要与被重写的方法的返回类型相同,否则不能称其为重写。
    (方法名和参数类型、个数相同的返回值不同会被认为是同一个方法)
3、访问修饰符的限制一定要大于被重写的方法的访问修饰符(public > protected > default > private)。
4、不能重写父类的private方法,如果定义的话也只是定义了一个新方法,而达不到重写的效果。

重载(Overload)
(1)方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名方法同时存在,具有不同的参数个数/类型
重载Overloading是一个类中多态性的一种表现。
(2)Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用
方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法,这就是多态性。
(3)重载的时候,方法名要一样,但是参数类型和个数不一样,返回类型可以相同也可以不相同。无法以返回类型作为
方法重载的区分标准。

重载方法的规则:
1、必须具有不同的参数列表(个数或类型不同)。
2、可以有不同的返回类型,只要参数列表不同就可以。
3、可以有不同的访问修饰符
4、可以抛出不同的异常。

动态绑定与动态绑定
在Java中存在两种绑定方式,一种为静态绑定,又称作早期绑定;另一种就是动态绑定,也叫后期绑定。

区别
(1)、静态绑定发生在编译时期,动态绑定发生在运行时。
(2)、使用private或static或final修饰的变量或者方法,使用静态绑定。而虚方法(可以被子类重写的方法)则会根据运行时
的对象进行动态绑定。
(3)、静态绑定使用类信息来完成,而动态绑定则需要使用对象信息来完成。
(4)、重载(Overload)的方法是用静态绑定完成,而重写(Override)的方法则使用动态绑定完成。

0 0
原创粉丝点击