经典Java面试题分析--

今天小编给大家讲解移到经典的Java面试题,如下。

    class A {
        public String show(D obj) {
            return ("A and D");
        }

        public String show(A obj) {
            return ("A and A");
        }
    }

    class B extends A {
        //	重载
        public String show(B obj) {
            return ("B and B");
        }
        //	重写
        public String show(A obj) {
            return ("B and A");
        }
    }

    class C extends B {
    }

    class D extends B {
    }

    public class DynamicTest {
        public static void main(String[] args) {

            A a1 = new A();
            A a2 = new B();
            B b = new B();
            C c = new C();
            D d = new D();
            System.out.println(a1.show(b));
            System.out.println(a1.show(c));
            System.out.println(a1.show(d));
            System.out.println(a2.show(b));
            System.out.println(a2.show(c));
            System.out.println(a2.show(d));
            System.out.println(b.show(b));
            System.out.println(b.show(c));
            System.out.println(b.show(d));
        }
    }

参考答案及解析:

A a1 = new A ;

实例化类A的对象,会加载A中的两个方法。

a1.show(b);

由于B继承了类A

在调用b的对象时候,会自动升级到A的对象。

打印出A and A 

a1.show(c);

同理打印出A and A 

打印出A and A 

a1.show(d)

调用类A中show(D d )方法

打印出A and D

即:

A and A
A and A
A and D



A a2 = new B();

加载了类A中的show(D obj)以及类B中重写的方法show(A obj)

答案为:

B and A
B and A
A and D

B b = new B();实例化B的方法以及A中的show(D obj):

答案为:

B and B
B and B
A and D

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值