java多态性

    xiaoxiao2021-03-25  188

    l 多态性

    多态性是指同名的若干方法,具有不同的实现,多态性能增强程序的动态特性,使其具备良好的扩展性,多态表现形式有两种:

    (1) 方法重载:又称为静态多态性,即一个类中允许多个同名方法,对这些同名方法的区分要点是:参数的个数不同,或者是参数类型不同,或者是参数的顺序不同。

    (2) 方法覆盖:又称为动态多态性,即子类对父类方法进行重新定义,但其方法名,返回值和参数形态完全相同。

    Tips:方法的返回类型不能作为方法重载的依据。若只有返回值不同,则既不是方法重载,也不是方法覆盖。编译器认为该方法不能再重新定义,编译出错。

    方法覆盖的规则:

    (1) 子类中重写的方法和父类中重写的方法要具有相同的名字,相同的参数表和相同的返回类型,只有方法体可以不同。

    (2) 子类覆盖的方法不能缩小父类方法的访问权限

    访问权限从大到小有:public->protected->default->private

    Java要求成员方法应当比起父类对应的成员方法具有相同或更高的访问控制方法,否则会导致编译出错。

    (3) 方法覆盖只存在于子类和父类(包含直接父类和间接父类)之间,在同一个类中只能被重载,不能被覆盖。

    (4) 父类的静态方法不能被子类覆盖为非静态方法。反之亦然,子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法。

    (5) 父类的私有方法不能被覆盖,私有方法只有本类能使用,因此无法被子类覆盖。

    (6) Final修饰方法,该方法不能被其所在类的子类覆盖,尽管方法覆盖的功能很强大,但有时候反而希望阻止其发生,那么就可以用final关键字修饰方法,防止该方法被覆盖。

    tips:当实现了“向上转型”,即将一个子类对象赋值给一父类对象时,被引用对象为子类,调用的是被引用对象的类的方法。

    转载请注明原文地址: https://ju.6miu.com/read-1672.html

    最新回复(0)