黑马程序员技术交流社区

标题: (讨论)接口真的解决了多继承的弊端吗? [打印本页]

作者: Eagle    时间: 2014-12-6 16:58
标题: (讨论)接口真的解决了多继承的弊端吗?
本帖最后由 Eagle 于 2014-12-6 16:59 编辑

今天我复习到了接口这里了,看的依然是毕老师的视频。听着毕老师说:
多实现解决了多继承的弊端:不确定性。
但是我刚想到一个问题:
继承一个类可以直接拿父类的方法用,而不用再写代码。
接口确实解决了多继承的不确定性,但是接口中的方法并没有具体内容,每个方法都必须复写,和自己写代码有什么不同呢?
在我看来,接口在这方面并没有解决多继承的问题,依然要写繁琐的代码。
还不如在高级编辑器里检查同一个类的所有的父类中是否有重名的方法。这样岂不是更好?
  1. <div class="blockcode"><blockquote>
  2. class Fu{
  3.           void show() //父类的show方法{
  4.                         System.out.println("Fu show run ");
  5.            }
  6. }
  7. class Zi extends Fu//子类Zi继承Fu{
  8. }
  9. class HelloWorld{
  10.                  public static void main(String[] args) {
  11.                        Zi z = new Zi();
  12.                        z.show();//直接调用父类的show
  13.                  }
  14. }
复制代码
大家看上面代码,子类直接调用父类方法,甚至在子类的主体上一句话都不写就可以运行父类的方法。
但是如果是接口呢?
  1. interface Inter1
  2. {
  3.          void show();
  4. }
  5. interface Inter2
  6. {
  7.           void show();
  8. }
  9. class SubInter implements Inter1,Inter2//多实现
  10. {
  11.             public void show()//必须复写方法,自己定义具体内容 {
  12.                     System.out.println();
  13.              }
  14. }
复制代码

还得在实现接口的类中覆盖原来的方法。
所以我个人认为,仅仅代表我自己现在的看法啊。
:接口没有从根本上解决多继承的问题。
或者是我对接口的理解还不够深入才有这样的看法。
小伙伴们呢?你们怎么看?

千万别骂我啊,有问题大家讨论就行,嘿嘿。



作者: 清诗纪事    时间: 2014-12-6 17:35
个人觉得这不是纯粹的解决没解决的问题,只能说在什么的场景下,哪个更合适,继承的优点在于可以提高开发效率,接口的有好处在于可以提高代码的扩展性,就像你说的因为接口中没有具体的函数体,需要把每一个函数都重写,但是多继承时的不确定性,如果就像你说的检查父类中的是否有重名函数,是不是在定义函数的时候就要尽量避免函数同名,这样的话,如果类中的函数特别多,会不会造成复杂度变高?而且,在需要在父类中进行修改,安全性就降低了
需要父类方法的时候就是用继承,感觉父类功能不够,需要扩展时,就用接口实现,感觉这样更加灵活
作者: Eagle    时间: 2014-12-6 17:57
清诗纪事 发表于 2014-12-6 17:35
个人觉得这不是纯粹的解决没解决的问题,只能说在什么的场景下,哪个更合适,继承的优点在于可以提高开发效 ...

恩恩,是的,我只是觉得单单从多继承的功能方面来说的话,接口完全解决了多继承的不确定性,但是没有多继承调用方法那么方便。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2