接口

接口是另一种定义数据类型的方式。

接口和类的相同之处:都有成员变量和成员方法,也可以形成继承关系。

接口和类的不同之处:接口中的属性都是常量(final)接口中的方法是抽象方法(没有方法体)

导入接口的原因:java只支持单重继承,每个类只能有一个超类。但实际应用中有时候需要多重继承—使用接口,一个类可以实现多个接口。

接口的概念:

接口的定义:【public】 interface 接口名【extend 父接口 1,父接口 2】{

【public】【static】【final】数据类型属性=常量值;

【public abstract】返回值类型方法名(【形参类表】


接口的属性必须用public static final修饰,是系统默认的,可部分省略或全部省略,但是一般都写出final。

Int MAX-SIZE = 50;等价于public static final int MAX-SIZE = 50;

接口的方法默认为public abstract,一般不写修饰符,可省略—接口中的方法都是抽象方法。

接口支持多继承.

1 修饰符若是public,说明接口可以被任何接口或类访问:若是默认的,说明接口只能是被同一个不包中的其它接口或类访问.

2接口的名称可以是任何有效的标识符.

3 接口中的成员变量都是公有的,静态地,最终的常量

4 接口中的方法都是公共的抽象的方法,仅有方法有签名,没有方法体

5 接口可以继承,通过关键字extends描述继承关系,子接口可以继承父接口的属性和方法。Java接口的继承与类的继承不同,接口支持多重继承 ,多个父接口之间用 逗号隔开。

接口和抽象类都包括抽象方法,都存着存在不同:

A抽象类可以有实例变量,而接口中不能有实例变量,而只能是静态的常量

B抽象类中可以有非抽象方法,而接口中这能有抽象方法。

C抽象类只支持单继承,接口支持多继承。

接口的定义:publicinterface Figure{

final double pi = 3.14;
 abstractvoid area();
}
Public calssCircle implement Fire{
 double radius;
public Circle(double r){
 radious=r;
}
Public void area(){
 System.out.println(“圆的面积=”+pi*radius*radius”);
}

}

接口体现的是一种规范,类似于整个系统的:总纲,她制定了系统各个模板应该遵循的标准,一个系统中的接口不应该经常改变。

可以使用instanceof来判断对象是否实现某个接口。

虽然可以使用接口变量来引导来实现接口的对象,但这种引用只能引用接口的成员,否则会发生编译错误。

强调:一个接口定义一个协定,实现接口的类必须遵守其协定。接口最适合为不相关的类提供通用功能,利用接口提供的方法,程序可以多态地处理这些完全不同的类的对象。

¯接口的继承

接口具有多重继承的特点,即一个接口可以有多个父接口。新的子接口继承所有父接口的全部方法和常量。接口继承的格式为:

[public] interface子接口extends 父接口1,父接口2,…{ 
 //静态属性; 
 //抽象方法; 
}

µ接口和抽象类

ü 接口和抽象类很像,它们都具有如下特征:

– 接口和抽象类都不能被实例化,它们都位于继承树的顶端,用于被其他类实现和继承。

– 接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。

ü 区别

– 设计目的不同

µ抽象类作为多个子类的共同父类,体现的是模板式设计。抽象类可以被当成系统实现过程中的中间产品,这个中间产品已经实现了部分功能,但这个产品还不能当成最终产品,必须更进一步的完善,这种完善可能有几种不同方式。

µ接口体现的是一种规范,类似于整个系统的“总纲”,它制定了系统各模块应该遵循的标准。因此一个系统中的接口不应该经常改变