Java中关于多重继承的问题

Java中关于多重继承的问题

标签(空格分隔): Java


多重继承的含义

    多重继承指的是一个类可以同时从多于一个的父类那里继承行为和特征,然而Java为了保证数据安全,它只允许单继承。
    有时候我们确实是需要实现多重继承,以达到不同的需求。而且现实生活中也真正地存在这样的情况,比如遗传:我们即继承了父亲的行为和特征也继承了母亲的行为和特征。幸运的是,Java还是为我们提供了两种方式让我们曲折来实现多重继承:接口和内部类。

一.用接口实现多重继承

 Java通过采用实现多个接口和继承一个父类的形式来达到多重继承的效果


interface CanFight {
    void fight();
}
interface CanSwim {
    void swim();
}
interface CanFly {
    void fly();
}
class ActionCharacter {
    public void fight() {

    }
}


class Hero extends ActionCharacter implements CanFight,CanFly,CanSwim {

    /**
     * Hero沒有显示提供fight()的定义,因为所继承的类中包含fight()方法,所有可以
     * 成功创建Hero对象
     * 
     */
    @Override
    public void swim() {
        // TODO Auto-generated method stub

    }

    @Override
    public void fly() {
        // TODO Auto-generated method stub

    }

}

二.用内部类实现多重继承

    如果没有内部类提供的,可以继承多个具体的或抽象的类的能力,一些设计与编程问题就很难解决,从这个角度看,内部类使得多重继承的解决方案变得完整。也就是说,如果拥有的是抽象的类或具体的类,而不是接口,那就只能用内部类才能实现多重继承。`
    例子:
    class Dee1{}
    abstract class E {}
    class Cer1 {
        Dee1 makeD() {
                return new Dee1() {};
                }
        E makeE() {
                return new E() {};
                }
    }
外部类里创建多个内部类以达到多重继承的目的,从而解决多重继承的问题,如果不需要解决多重继承问题,大可换其他方式,不必使用内部类。

猜你喜欢

转载自blog.csdn.net/pjmike233/article/details/76886985