黑马程序员技术交流社区

标题: 抽象类和接口的小练习 [打印本页]

作者: 庄星睿    时间: 2012-6-13 12:41
标题: 抽象类和接口的小练习
找了几道改错题练练,越练越没信心了,基础啊。。。伤不起啊
  1. abstract class A
  2. {
  3. public abstract void fun();
  4. interface B
  5. {
  6. public  void fun();
  7. }
  8. }

  9. class X extends A
  10. {
  11. public void fun()
  12. {
  13. System.out.println("class X..........void fun()");
  14. }

  15. class Y implements B
  16. {
  17. public void fun()
  18. {
  19. System.out.println("class Y........void fun()");
  20. }
  21. }

  22. }

  23. class Test
  24. {
  25. public static void main(String[] args)
  26. {
  27. A a=new X();
  28. a.fun();
  29. //A.B b=a.new Y();
  30. A.B b=new X().new Y();
  31. b.fun();
  32. }
  33. }
复制代码
A a=new X();
a.fun();
//A.B b=a.new Y();  //a相当于 A a=new X(); 抽象类不能实例化 或者把A a=new X() 改成X a=new X(),或者把a改成new X()
A.B b=new X().new Y();
b.fun();
刚查了,抽象类里是可以包含接口的,反之接口里也可以包含抽象类的,我改了一下,感兴趣的看一下,呵呵
  1. interface A
  2. {
  3. public  void fun();
  4. abstract class B
  5. {
  6. public abstract void fun();
  7. }
  8. }

  9. class X implements A
  10. {
  11. public void fun()
  12. {
  13. System.out.println("class X..........void fun()");
  14. }

  15. class Y extends B
  16. {
  17. public void fun()
  18. {
  19. System.out.println("class Y........void fun()");
  20. }
  21. }

  22. }

  23. class Test2
  24. {
  25. public static void main(String[] args)
  26. {
  27. A a=new X();
  28. a.fun();
  29. //A.B b=a.new Y();
  30. A.B b=new X().new Y();
  31. b.fun();
  32. }
  33. }
复制代码
实例化跟上面都一样了,不论接口还是抽象类都必须子类去实例化






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