@ayw
2016-05-10T11:42:16.000000Z
字数 1675
阅读 504
接口
接口的概念:(可以理解是一个特殊的抽象类)
>
- 如果一个类中的全部方法都是抽象方法,全部属性都是全局常量,那么此时就可以将这个类定义成一个接口。
但是需要注意的有两点:
- 接口中的所有方法的访问权限都是 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()
{
}
}