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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄玉昆 黑马帝   /  2013-2-9 15:27  /  2197 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我自己做了一下关于子类继承父类实现接口的问题的测试,先看下面一段代码:
  1. /*
  2. 关于子类继承父类实现接口的问题
  3. */

  4. //接口
  5. interface Jie
  6. {
  7.         public abstract void method1();
  8.         /*
  9.         如果有下面这个抽象方法,在Zi这个子类或父类中必须对其复写
  10.         父类中可以不用复写这个方法
  11.         */
  12.         //public abstract void method2();
  13. }
  14. //父类
  15. abstract class Fu1 implements Jie
  16. {
  17.         public void method1()
  18.         {
  19.                 System.out.println("Fu2-Jie-method1");
  20.         }

  21. }
  22. //子类
  23. class Zi1 extends Fu1
  24. {
  25.         public void fun1()
  26.         {
  27.                 System.out.println("zi1-fu1-method1");
  28.         }
  29. }
  30. //测试:
  31. class  ZiFuJ
  32. {
  33.         public static void main(String[] args)
  34.         {
  35.                 Zi1 z = new Zi1();
  36.                 z.method1();
  37.                 z.fun1();
  38.         }
  39. }
复制代码
我得出的结论,或者说我的理解是:
1、对于父类已经implements接口的,子类直接继承父类而不需要再implements这个接口了,因为继承就已经可以使用父类中的成员了,如果父类(指抽象类,不抽象就必须实现接口全部抽象方法)并未全部实现接口全部抽象方法,那么子类若要实现接口的功能,只得自己再实现一下。当然,对父类中实现接口的功能不爽,子类就得自己动手复写接口中的自己想实现的功能了。
2、对于父类未implements接口的,那么不用多说,子类必须implements接口中的所有抽象方法。
用代码表达就是:1 class Zi extends Fu implements Jie{}  2 class Zi implements Jie{} ,有了1,就可以不必写2了;加上2的必要就是说子类需要另外或者重新实现接口。
希望我这么说,对大家有帮助。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马