美文网首页
java可以实现“多继承”了

java可以实现“多继承”了

作者: 雨中星辰0 | 来源:发表于2021-04-12 20:52 被阅读0次

总所周知,java中本质上是不支持多继承的,比如下面这样:

class A extends B,C

但其实不能这样写,因为java不支持多继承。
但是你可以像下面这样实现继承多个类

class B extends C
class A extends B

这样C就同时继承了B和A两个类,但是这样方式其实是有问题的,它虽然从某种程度上来说确实达到了多继承的目的,但class Bclass C,本质上是没有继承关系的,我们为了实现多继承的目的,就强迫B继承C,这是不合理的。那还有没有别的办法可以解决呢?有!java中虽然类不可以多继承,但是接口可以,将上面的demo改一下变成了这样。

interface BIntf
interface CIntf 
interface AIntf extends BIntf,CIntf

class A implements AIntf
class B implements BIntf
class C implements CIntf

通过这样的方式,class A也达到了“多继承”的目的。

但这样,仍然是比较麻烦的,还有没有更好的办法呢?有,也没有,在java8以后,接口是可以由默认方法的,那如果我们的接口中的所有方法都有默认实现,那除了不能实例化,从某些角度来说,它是不是就可以看成class了,那java 类实现多个接口,是不是就相当于多继承了呢?
例:

/**
 * @author star
 * @descripton 测试接口
 * @date 2021/4/12
 **/
public interface TestIntf {
    default public void printf(String word) {
        System.out.println("TestIntf:" + word);
    }
}


/**
 * @author star
 * @descripton 多继承测试类
 * @date 2021/4/12
 **/
public class MutiExtendTest implements TestIntf,TestIntf2{
    public static void main(String[] args) {
        MutiExtendTest mutiExtendTest = new MutiExtendTest();
        mutiExtendTest.printf("star");
        mutiExtendTest.print2("star");

    }
}


/**
 * @author star
 * @descripton 测试接口
 * @date 2021/4/12
 **/
public interface TestIntf2 {
    default public void print2(String word) {
        System.err.println("TestIntf:" + word);
    }
}

但通过这种取巧的方式有一个问题,类实现的多个接口中不能有一样的方法,否则就会报错,java它不知道应该用哪个方法实现。

相关文章

  • java可以实现“多继承”了

    总所周知,java中本质上是不支持多继承的,比如下面这样: 但其实不能这样写,因为java不支持多继承。但是你可以...

  • JAVA常见问题总计 高级类特性1

    java类是否可以多继承,怎么实现多继承?答:java没有多继承,但可以通过接口的形式来达到多继承的目地。 我比较...

  • 2020-07-08 腾讯客户端开发面试

    项目经历 java 三大特性?java 可以多继承吗?如何实现多继承?多态有哪些类型?封装,继承,多态;不可以;接...

  • 面向对象三大特性

    三大特性:继承 封装 多态 继承 Java中的继承只能单继承,但是可以通过内部类继承其他类来实现多继承。 封装 封...

  • Java程序员面试笔试提纲(部分)

    1.在java中,程序中通过类的定义,只能实现单继承,但是通过接口可以实现多继承 2.java类的成员分为publ...

  • 第十三章接口

    Java中继承为单继承,只有一个父类 接口 特性 接口不能被实例化 实现类必须实现接口的所有方法 实现类可以实现多...

  • Python多重继承(拓扑排序)(9)

    Python跟Java不同,Java只能单继承(不过有多实现),而Python能够多重继承。其多重继承遵循拓扑排序...

  • 继承

    java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是可实现多接口。 1:成员变量。当子父类...

  • java接口相关的

    突然发现好久没有更新了 写一点关于java接口的东东吧 关于接口 java中是禁止多继承的 所以要想实现多继承就得...

  • java09(继承)

    多实现: java只支持单继承,不支持多继承 因为多继承容易带来安全隐患:当多个父类中定义了相同的功能,当...

网友评论

      本文标题:java可以实现“多继承”了

      本文链接:https://www.haomeiwen.com/subject/gzvxlltx.html