JAVA多态(选择最合适的函数)

    xiaoxiao2021-09-05  170

    JAVA多态大家已经非常熟悉了,多态机制使得在调用函数时,自动选择实际类型中的覆盖(override)函数。

    看如下代码:

    package Test; public class Test { public static void main(String []args) { A test = new D(); test.locate(); } } class A { public void locate() { System.out.println("class A"); } } class B extends A { public void locate() { System.out.println("class B"); } } class C extends B { public void locate() { System.out.println("class C"); } } class D extends C { public void locate() { System.out.println("class D"); } }很显然,运行后会输出:

    class D 如果class D中没有定义locate方法会怎么样呢?答案是会顺着继承关系逐级向上查找,直到遇到定义的locate函数为止,代码如下:

    package Test; public class Test { public static void main(String []args) { A test = new D(); test.locate(); } } class A { public void locate() { System.out.println("class A"); } } class B extends A { public void locate() { System.out.println("class B"); } } class C extends B { // public void locate() { // System.out.println("class C"); // } } class D extends C { // public void locate() { // System.out.println("class D"); // } } 运行后会输出:

    class B

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

    最新回复(0)