探讨java与Python区别之多继承

为什么java不存在多继承

今天刚学完Python的面向对象,发现在Python中类的继承是存在多继承的,而以前学的java却不存在多继承,学过java的都知道,类与类之间只有单继承的关系,而接口与类或接口与接口之间却存在多实现,那么大家有没有考虑过,为什么类却不能存在多继承的关系呢?

1.产生的歧义

比如我们定义一个A的类,里面定义一个eat()方法,再定义一个B类和C类,也分别定义自己的eat实现方法,并且让B类和C类分别继承A类,然后我们再定义一个D类,采用多继承去继承B类和C类,如果我们只引用eat方法,这样编译器无法决定应该调用B的eat方法还是调用C的eat方法,这种问题也称为Diamond问题,但是为什么Python或者c++都可以多继承,而java不能,原因并不是技术难度,而是更多的可维护和更清晰的设计,虽然这只是java设计师确认,我只是推测。而接口只存在方法的声明,没有方法实现,所以没有任何歧义。

发布了19 篇原创文章 · 获赞 14 · 访问量 2041

猜你喜欢

转载自blog.csdn.net/qq_45455361/article/details/101156819