[关闭]
@ayw 2016-05-10T11:42:16.000000Z 字数 1675 阅读 504

接口

接口


接口的概念:(可以理解是一个特殊的抽象类)
>
- 如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接口。

但是需要注意的有两点:

  • 接口中的所有方法的访问权限都是 public
  • 接口本身都是由全局常量和抽象方法组成,所以以上的定义可以简化为以下的形式:

接口定义时,格式特点:

  • 接口中常见定义:常量,抽象方法
  • 接口中的成员都有固定修饰符:
    • 常量:public static final
    • 方法: public abstract
  1. interface A//定义接口
  2. {
  3. //public static final String INFO = "INFO";
  4. //public static final String AUTHOR = "Nie";
  5. String INFO = "INFO"; //等价于上面的两种方式
  6. String AUTHOR = "Nie";
  7. //public abstract void print(); //抽象方法
  8. //public abstract String getInfo(); //抽象方法
  9. void print(); //等价于上面的两种方式
  10. String getINFO();
  11. }
  12. //以上的代码称为接口的实现。
  13. class 子类 implement 接口A,接口B {
  14. }
  15. //那么如果一个类即要实现接口,又要继承抽象类的话,则按照以下的格式编写即可:
  16. class 子类 extends 父类 implement 接口1,接口2,{
  17. }

接口的使用:

接口可以被类多实现,也是对多继承不支持的转换形式,java支持多实现

  1. interface Inter
  2. {
  3. public static final int NUM = 3;
  4. public abstract void show();
  5. }
  6. interface InterA
  7. {
  8. public abstract void show();
  9. }
  10. class Demo
  11. {
  12. public void function()
  13. {
  14. }
  15. }
  16. class Test extends Demo implements Inter,InterA
  17. {
  18. public void show(){} //可以覆盖以上两个接口的show(),因为没有具体是实现
  19. }
  20. //接口与接口的关系,继承!
  21. interface A
  22. {
  23. void methodA();
  24. }
  25. interface B //extends A
  26. {
  27. void methodB();
  28. }
  29. interface c extends B,A //如果B没有继承A,C可以直接继承B,A因为都没有方法主体,这个就是接口的多继承,类与类之间只能是单继承
  30. {
  31. void methodC();
  32. }
  33. class D implements C
  34. {
  35. public void methodA();
  36. public void methodB();
  37. public void methodC();
  38. }

接口的特点:

  • 接口是对外暴露的规则
  • 接口是程序的功能扩展
  • 接口可以用来多实现
  • 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
  • 接口与接口之间可以有继承关系
  1. abstract class Student
  2. {
  3. abstract void study();
  4. void sleep()
  5. {
  6. System.out.println("sleep");
  7. }
  8. void smoke()
  9. {
  10. System.out.println("smoking");
  11. }
  12. }
  13. interface Smoking
  14. {
  15. void smoke();
  16. }
  17. class ZhangSan extends Student implements Smoking
  18. //相当于扩展功能,是抽烟的接口,ZhangSan继承Student抽象类,也就是从属于Student,所以需要根据是否是从属关系,或者扩展功能确定什么时候使用接口和抽象类继承,继承相当于从属于父类的体系,从属于该体系就需要使用继承,如果在这个体系中有其他扩展的项目,或者功能就需要使用接口,也就是在这个体系之外就需要使用接口
  19. {
  20. public void study()
  21. {
  22. }
  23. public void smoke()
  24. {
  25. }
  26. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注