@ayw
2016-05-10T11:42:16.000000Z
字数 1675
阅读 546
接口
接口的概念:(可以理解是一个特殊的抽象类)
>
- 如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接口。
但是需要注意的有两点:
- 接口中的所有方法的访问权限都是 public
- 接口本身都是由全局常量和抽象方法组成,所以以上的定义可以简化为以下的形式:
接口定义时,格式特点:
- 接口中常见定义:常量,抽象方法
- 接口中的成员都有固定修饰符:
- 常量:public static final
- 方法: public abstract
interface A//定义接口{//public static final String INFO = "INFO";//public static final String AUTHOR = "Nie";String INFO = "INFO"; //等价于上面的两种方式String AUTHOR = "Nie";//public abstract void print(); //抽象方法//public abstract String getInfo(); //抽象方法void print(); //等价于上面的两种方式String getINFO();}//以上的代码称为接口的实现。class 子类 implement 接口A,接口B {}//那么如果一个类即要实现接口,又要继承抽象类的话,则按照以下的格式编写即可:class 子类 extends 父类 implement 接口1,接口2,{}
接口的使用:
接口可以被类多实现,也是对多继承不支持的转换形式,java支持多实现
interface Inter{public static final int NUM = 3;public abstract void show();}interface InterA{public abstract void show();}class Demo{public void function(){}}class Test extends Demo implements Inter,InterA{public void show(){} //可以覆盖以上两个接口的show(),因为没有具体是实现}//接口与接口的关系,继承!interface A{void methodA();}interface B //extends A{void methodB();}interface c extends B,A //如果B没有继承A,C可以直接继承B,A因为都没有方法主体,这个就是接口的多继承,类与类之间只能是单继承{void methodC();}class D implements C{public void methodA();public void methodB();public void methodC();}
接口的特点:
- 接口是对外暴露的规则
- 接口是程序的功能扩展
- 接口可以用来多实现
- 类与接口之间是实现关系,而且类可以继承一个类的同时实现多个接口
- 接口与接口之间可以有继承关系
abstract class Student{abstract void study();void sleep(){System.out.println("sleep");}void smoke(){System.out.println("smoking");}}interface Smoking{void smoke();}class ZhangSan extends Student implements Smoking//相当于扩展功能,是抽烟的接口,ZhangSan继承Student抽象类,也就是从属于Student,所以需要根据是否是从属关系,或者扩展功能确定什么时候使用接口和抽象类继承,继承相当于从属于父类的体系,从属于该体系就需要使用继承,如果在这个体系中有其他扩展的项目,或者功能就需要使用接口,也就是在这个体系之外就需要使用接口{public void study(){}public void smoke(){}}