java面试题 多态

在这里插入图片描述

public class Testduotai {
    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));
    }


}
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{}

a1所拥有的函数只有A类中的方法
故前三个的结果为
A and A
A and A
A and D
a2由于是指向B类的引用
且B类中的第二个show函数对A中第二个函数进行了重载,故B类所拥有的函数为A类中的第一个show函数,B类中的第二个show函数(B类中第一个函数父亲A类没有)
B and A
B and A
A and D
b拥有从父类继承的第一个show函数和B类的两个函数,(第二个函数被B类重载了)且执行函数时要选择最近父类的函数,show(d)使用B的show方法,而不是A的
B and B
B and B
A and D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值