java为什么不允许多重继承

张三和李四一同到一家公司去应聘,二人被安排同时接受经理的面试。

经理拿出一个代码片段:

public class Father {

    public void makeMoney(){
        System.out.println("赚了1亿");
    }
}
public class Mother {

    public void makeMoney(){
        System.out.println("赚了5000万");
    }
}
public class Son extends Father extends Mother{

    @Override
    public void makeMoney() {
        System.out.println("赚了500万");
    }

    public static void main(String[] args) {
        Son son = new Son();
        son.makeMoney();
    }
}

经理问:运行Son的main方法,会发生什么?

张三见状,抢答道:“这么简单,500万!”

经理看没说话,看着李四。

李四扫了一眼代码,缓缓的说了一句:第一行,第27个字符那里,eclipse会提示"Syntax error on token "extends", implements expected",intellj idea会提示"{ expected"。

经理:惊恐,不好意思,弄错了,我改一下?

张三:"......"

public class Son extends Father , Mother{

    @Override
    public void makeMoney() {
        System.out.println("赚了500万");
    }

    public static void main(String[] args) {
        Son son = new Son();
        son.makeMoney();
    }
}

经理:这样呢?

张三又是第一个回答:这回总是500万吧,反正不是1亿,也不是5000万。

李四回答:eclipse会提示...

还没等李四说完,经理突然打断:行了,行了,你就告诉我这样写有没有问题,有什么问题。

李四继续回答:早说嘛,这样写有问题,会编译不通过,因为java不允许多重继承。

张三:多重继承,什么玩意儿

李四:假设java允许多重继承,那么Son就可以重载Father和Mother中的方法,这两个方法的参数列表、方法签名都是一样的,java会搞不清楚到底是重载Father还是Mather的方法。但如果你把Father、Mother都改成interface,就算他们的参数列表、方法签名都是一样的,由于接口并不提供实现。所以,并没有冲突

经理:既然你提到了interface,那我接下来把Father改成这样,然后Son同时实现这两个接口,应该怎么写呢?

public interface IFather {

    void makeMoney(String date);
}
public interface IMother {

    long makeMoney(String date);
}
张三:你把IMother中的makeMoney的返回值也改掉了,呵呵,幸亏我眼尖呐,看我的。

张三迅雷不及掩耳地写出了代码

public class Son implements IFather , IMother{


    public static void main(String[] args) {
        Son son = new Son();

    }


    @Override
    public void makeMoney(String date) {

    }

    @Override
    public long makeMoney(String date) {

    }
}
经理:哈哈哈...

经理冷笑一声,问李四:你写的代码呢,写不出来吗。

李四并不着急,只是说了一句:不是我写不出来,是java不让我写啊。

张三:java不让你写?手长在你身上,怎么不让你写了,我看你就是不会。

经理对张三说:张先生,很高兴您来我们这里面试,我认为您不能胜任我们的工作,这次面试就到这里了,谢谢。

张三:什么意思,你现在只出了一道题,我也给出了正确答案。不行,我不走,我要继续答题。

经理:保安!

“我要继续面试啊,你们干什么?老子会spark......”


  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值