Java编程中签名更改代码怎么实现

来源:爱站网时间:2022-01-27编辑:网友分享
想要了解清楚Java编程中签名更改代码怎么实现这个问题,可以看看爱站技术频道小编所整理的相关资料,感兴趣的小伙伴千万不要错过这经常的内容。

问题描述


所以我一直在研究继承,而我偶然发现了这个程序:

public class HelloWorld {
    static class A {
        void f() { System.out.println("A"); }
    }

    static class B extends A {
        void f() { System.out.println("B"); }
    }

    static class C {
        void func(B b) { b.f(); }
    }

    static class D extends C {
        void func(A a){ a.f(); }
    }

    public static void main(String args[]) {
        ( (new D())).func( (A) (new B()));
        A a =  new B();
        a.f();
        B b = new B();
        C c = new D();
        c.func(b);
    }
}

因此,即使A和C在最后几行中以完全相同的方式实现,A的方法被B覆盖,但C不被D覆盖?该程序打印如下:乙乙B

思路:


这是因为func中的方法D没有覆盖C的签名更改。

static class C {
    void func(B b) { b.f(); }
}
static class D extends C {
    void func(B a){ a.f(); }
}

这将导致方法的覆盖。

爱站技术频道小编个大家分享的内容就到这里了,还有什么需要了解清楚的,欢迎来我们网站咨询或者留言给小编。

上一篇:怎么在Java中调用已声明的变量

下一篇:构造函数中引用如何实现比较好

您可能感兴趣的文章

相关阅读

热门软件源码

最新软件源码下载