上面的这些都是致命的歧义,所以java中禁止一个类继承多个父类;

  但是那个白头发的老人在很多年前给 java提供了接口,并能通过接口的功能获得多继承的许多优点而又摒弃了类与类多继承的缺点。

  这到底是怎们做到的纳?嗯,好了,我们也来详细的分析一下:

  java允许一个接口继承多个父接口,也允许一个类实现多个接口,而这样的多继承有上面提到的缺点吗?

  因为有接口的抽象性,所以答案肯定是没有;

  1)在接口中不能有实例变量,只能有静态的常量,每个静态的常量在程序开始运行前都已经初始化成功,如果有重命名的出现,编译器先生会及时的告诉你的;

  2)接口中不能有具体的方法(包含方法体),只能有抽象方法,具体的方法只能由实现接口的类实现,在调用的时候也只会调用实现类的方法,这样是不会存在歧义的;

  那门开篇的那半人马可以这样来写了:

interface Humain {
    String arm = "2只能抓东西的胳膊";

    void output();
}

interface Horse {
    String leg = "4只能跑的腿";

    void output();
}

interface Half extends Humain, Horse {
}

public class HalfHorse implements Half {
    // 实现上面俩个接口里面的同名方法
    // 这个类拥有两个接口的静态变量
    public void output() {
        System.out.println("我是个有" + arm + "和" + leg + "的半人马");
    }

    public static void main(String[] args) {
        HalfHorse halfhorse = new HalfHorse();
        halfhorse.output();

    }
}

  (PS:上面这段代码是可以编译通过的)

  因为引入了接口,所以程序员有很大空间的想象力,这可能是Java吸引许多人的魅力之一了。