接口的定义语法:[修饰符] interface 接口名 extends 父接口1、父接口2、……{
//常量定义
//方法定义
}
类实现接口的语法:class 类名 extends 父类名 implements 接口1、接口2、……{
//类成员
}
接口的命名规则与类相同。如果修饰符是public,则该接口在整个项目中可见;如果省略修饰符,则该接口只在当前包可见。
接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final修饰,即接口中的属性都是全局静态常量。接口中的常量必须再定义时指定初始值。
public static final int PI=3.14;
int PI=3.14; //在即口中,这两个定义语句效果完全相同
Int PI; //错误!在借口中必须指定初始值,在类中会有默认值
接口中所有方法都是抽象方法。接口中方法都自动用public abstract修饰,即接口中只有全局抽象方法。
和抽象类一样,接口也不能实例化,接口中不能有构造方法。
接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。
接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。
一个类只能有一个直接父类,但可以通过implements实现多个接口。当类在继承父类的同时又实现了多个接口时,extends关键字必须位于implements关键字之前。
接口与抽象类的区别在于:抽象类利用代码复用,接口利于代码维护。
在面向对象编程中提倡面向接口编程,而不是面向实现编程。
C#中定义接口的语法:[修饰符] interface 接口名 : 父接口1、父接口2、……{
//属性定义
//方法定义
}
C#中实现接口的语法:class 类名 : 父类名 、接口1、接口2、……{ }
接口之间可以通过冒号“:”来实现继承关系,一个接口可以继承多个接口,但接口不能继承类。类只能继承一个父类,但可以实现多个接口,使用冒号“:”来继承类并实现接口。
接口定义零个或多个成员,成员主要是方法、属性和索引器。接口中不能包含常量、变量或构造方法,也不能包含任何静态成员。
接口IE口中成员访问权限是public,定义接口时显示指定任何修饰符都是非法的。
按照惯例,C#中接口的名称以大写字母“I”开头。
在Java与C#语言中,接口具有以下区别。
Java总接口通过extends来继承父接口,类通过implements实现接口;C#中通过冒号“:”来实现这两个功能。
Java接口中的成员变量(属性)都是常量,自动用public static final修饰;C#接口中不允许存在成员变量,但可以有属性。
Java接口中属性和方法都可以使用public修饰;C#中默认为public,但不允许显示使用public修饰。
Java接口中可以定义静态常量和方法,C#接口中不允许包含任何静态成员。