A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Eagle 高级黑马   /  2014-12-6 16:58  /  2056 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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. }
复制代码

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

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


评分

参与人数 2技术分 +4 收起 理由
李家汉子初养成 + 2
船长 + 2 赞一个!

查看全部评分

2 个回复

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

恩恩,是的,我只是觉得单单从多继承的功能方面来说的话,接口完全解决了多继承的不确定性,但是没有多继承调用方法那么方便。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马