Java实现多重继承

        想了解Java对于多重继承是怎么实现的?我们先从继承的概念上先了解下单继承和多重继承。

一、继承的概念

        继承是面向对象编程的一种特性,是拓展原有类功能实现代码复用的一种方式。

        多重继承指的是一个类可以同时从多于一个父类继承行为和特征。

        单继承指的是一个类只能继承一个父类的行为和特征。

        学过Java的人都知道,它为了保证数据安全,只允许单继承。但是实际的应用中确实需要实现多重继承。Java中可以使用接口和内部类实现类似于多重继承的效果。

二、Java中实现多继承

1.接口

        在Java中一个类可以多重实现,但不能多重继承,也就是说一个类能够同时实现多个接口,但不能同时继承多个类。

interface CanFight {
    void fight();
}

interface CanSwim {
    void swim();
}


interface CanFly {
    void fly();
}

 class ActionCharacter {
    public void fight() {
        System.out.println("I can fight.");
    }
}

 class Hero extends ActionCharacter implements CanFight, CanFly, CanSwim {
    public void fly() {
        System.out.println("I can fly.");
    }

    public void swim() {
        System.out.println("I can swim.");
    }
}

 class AdventureCharacter {
    public static void fc(CanFight x) {
        x.fight();
    }

    public static void cs(CanSwim x) {
        x.swim();
    }

    public static void cf(CanFly x) {
        x.fly();
    }

    public static void ac(ActionCharacter x) {
        x.fight();
    }

    public static void main(String[] args) {
        Hero h = new Hero();
        fc(h);
        cf(h);
        cs(h);
        ac(h);
    }
}

上面的实例是通过接口的方式间接实现了Java的多重继承。

运行结果:

I can fight.
I can fly.
I can swim.
I can fight.

2.内部类

        接口实现多重继承是一种比较可行和普遍的方式。如果父类为抽象类或者具体类时,那么就只能通过内部类实现多重继承。

class A {
    void showA() {
        System.out.println("Show A");
    }
}
 
class B {
    void showB() {
        System.out.println("Show B");
    }
}
 
public class MultiInheritanceExample {
 
    class C extends A {
        void showC() {
            System.out.println("Show C");
        }
    }
 
    class D extends B {
        void showD() {
            System.out.println("Show D");
        }
    }
 
    public static void main(String[] args) {
        MultiInheritanceExample example = new MultiInheritanceExample();
        
        // 通过内部类C继承A
        C c = example.new C();
        c.showA();
        c.showC();
        
        // 通过内部类D继承B
        D d = example.new D();
        d.showB();
        d.showD();
    }
}

在这个例子中,C 和 D 分别是内部类,它们分别继承自 A 和 B,实现了多重继承的效果。这样,C既拥有 A 的特性,也拥有 B 的特性,D 同理。

        内部类一个重要的特性:内部类可以继承一个与外部类无关的类,保证了内部类的独立性,正是基于这一点,多重继承才会成为可能。

        以上是基于接口和内部类对于Java实现多重继承的两种方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值