Java中的接口

来源:互联网 发布:python logger 配置 编辑:程序博客网 时间:2024/06/08 15:52

在java中,类与类之间只能单继承,不能多继承,实际需要多继承,所以需要接口。

接口里不包含普通方法,只有抽象方法。和抽象类一样,接口是从多个相似类中抽象出来的,和抽象类的区别是接口只是规范,不提供任何实现。

接口定义的是多个类公用的行为规范,通常是一种公用方法。

定义接口时不使用class关键字,而是使用interface关键字

说明:

l  修饰符若是public,说明接口可以被任何其他接口或类访问;修饰符若是默认的,说明接口只能被同一包中的其他接口或类访问。

l  接口的名称可以是任意有效的标识符

l  接口中的成员变量都是共有的、静态的、最终的常量

l  接口中的方法都是公共的、抽象的方法,仅有方法标签,没有方法体

l  接口可以继承,子接口可以继承父接口的属性和方法。Java接口的继承与类的继承不同,接口支持多继承,多个父接口之间用逗号分隔。

public interface Figure {double PI=3.14;void area();}

public class Circle implements Figure {double radius;    public Circle(double r) {radius=r;}public void area() {System.out.println("圆的面积="+PI*radius*radius);}}

public class Renctangle implements Figure {double width,height;public Renctangle(double w,double h) {width=w;height=h;}public void area() {System.out.println("矩形的面积="+width*height);}}

public class Test {public static void main(String[] args) {Circle c=new Circle(10.0);c.area();Renctangle rect=new Renctangle(10.0,5.0);rect.area();}}

接口和抽象类的异同:

相同:

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

接口和抽象类都可以包含抽象方法,实现接口或抽象类的普通子类都必须实现这些抽象方法(即子接口扩展某个父接口,将会获得父接口里定义的所有抽象方法、常量属性、内部类和枚举类定义)

不同:

接口里只能包含抽象方法,不包含已经实现的方法;抽象类中则完全可以包含普通方法;

接口里不能定义静态方法;抽象类里可以定义静态方法

接口里只能定义静态常量属性,不能定义普通属性;而抽象类里既可以定义普通属性,也可以定义静态常量属性

接口不包含构造方法;抽象类里可以包含构造方法,但并不是用于创建对象,而是让其子类调用这些构造方法来完成属于抽象类的初始化操作

接口里不能包含初始化块;抽象类完全可以包含初始化块

一个类最多只能有一个直接父类,包括抽象类;但一个类中可以直接可以直接实现多个接口,通过这些接口弥补java单继承方面的不足。



0 0