Java基础——Java"多继承"的三种实现方式

本文探讨了Java中如何实现多继承,虽然Java语言本身仅支持单继承,但可以通过多层继承、内部类和接口来模拟多继承。其中,接口是最推荐的实现方式,因为接口可以继承多个父接口,提供更好的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java基础——Java"多继承"的三种实现方式

Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承"。

多层继承
内部类
接口

1、多层继承

  通过继承的层叠实现多继承,但多层继承一般不要超过3层,代码比较冗余。

	class A{
	    public void getA(){
	        System.out.println("This is A");
	    }
	}
	
	class B extends A{
	    public void getB(){
	        System.out.println("This is B");
	    }
	}
	
	class C extends B{
	    public void getC(){
	        System.out.println("This is C");
	    }
	}
	
	public class MultipleInherit {
	    public static void main(String[] args) {
	        // 此时的C通过继承B,也继承了A(B继承着A),从而实现了"多继承"(C继承了A与B)
	        C c = new C();
	        c.getA();
	        c.getB();
	        c.getC();
	    }
	}	

  输出如下:

在这里插入图片描述

2、内部类

  使用成员内部类也可实现"多继承"

	class D{
	    public void getD(){
	        System.out.println("This is D");
	    }
	}
	
	class E{
	    public void getE(){
	        System.out.println("This is E");
	    }
	}
	
	class F{
	    class F1 extends D{
	        public void getDAndF1(){
	            System.out.println("This is F1");
	            getD();
	        }
	    }
	    class F2 extends E{
	        public void getEAndF2(){
	            System.out.println("This is F2");
	            getE();
	        }
	    }
	    public void fun(){
	        // 在外部类中的方法中,调用内部类的方法与属性(内部类对外部类外部并不可见)
	        // 内部类只在外部类中被调用,对外部类的外部不可见,这种设计更能体现封装性
	        new F1().getDAndF1();
	        new F2().getEAndF2();
    	}
	}
	
	public class MultipleInherit2 {
	
	    public static void main(String[] args) {
	        F f = new F();
	        f.fun();
	    }
	}

  输出如下:

在这里插入图片描述

3、接口

  与前面两种方式(尤其是内部类)相比,接口是最能体现"多继承"的方式,可以通过实现接口的多继承性(接口可以使用extends继承多个父接口)来实现"多继承",在即可以使用内部类又可以使用接口时,优先选择使用接口

	interface IA{
	    void funA();
	}
	
	interface IB{
	    void funB();
	}
	
	// 使用接口多继承实现"多继承"
	interface IC extends IA,IB{
	    void funC();
	}
	
	// 实现接口IC的同时需要实现接口IA,IB
	class CImpl implements IC{
	
	    @Override
	    public void funA() {
	        System.out.println("This is A");
	    }
	
	    @Override
	    public void funB() {
	        System.out.println("This is B");
	    }
	
	    @Override
	    public void funC() {
	        System.out.println("This is C");
	    }
	}
	
	public class MultipleInherit3 {
	
	    public static void main(String[] args) {
	        IC c = new CImpl();
	        c.funA();
	        c.funB();
	        c.funC();
	    }
	}

  输出如下:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值