第四章 接口
一、什么是接口?
接口同样是哟中规范和标准,题目可以约束类的行为,是一些方法特征的集合,但是没有方法的实现。
接口可以看做一种特殊的“抽象类”,但是差异与抽象类万千不同的语法来表示,两者的设计观念也是不同的,抽象类利用与代码复用,接口利于代码的扩展和维护
二、接口的语法
定义接口
[修饰符] 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 实现继承关系,一个接口可以继承多个接口,但接口不能继承类。
- 接口的实际类必须实现接口的全部方法,否则必须定义为抽象类。
三、接口表示一种能力:体现在接口的方法上
关心实现类有何能力,而不关心实现细节
面向接口的约定而不考虑接口的具体实现
四、面向接口编程
在面向对象编程中提倡面向接口编程,而不是面向实现编程。
接口体现了约定和实现相分离的原则,通过面向接口编程,可以降低代码间的耦合性,提高代码的可扩展性,面向接口编程就意味着开发系统时,主题结构使用接口,接口构成系统的股价,这样就可以通过更换实现接口的类来实现更换系统
面向接口编程可以实现接口和实现的分离,这样做最大的好处就是能够在客户端位置的情况下进行修改代码。
良好的接口定义一定是来自于需求的,它绝对不是程序员绞尽脑汁想出来的
五、在C#中使用接口
C#的接口语法和java相似
定义接口
[修饰符] interface 接口名: 父接口 1,父接口 2,······{
属性定义
方法定义
}
实现接口
class 类名:父类名,接口1,接口2······{ }
接口区别
- java中接口通过 extends 来继承接口,类通过 implements 来实现接口;C#中通过冒号 “ : ” 来实现这两个功能
- java接口中的成员变量(属性)都是常量,自动用 public static final 修饰;C#接口中不允许存在成员变量,但可以有属性。
- java接口中的属性和方法都可以使用 public 修饰;C#中默认用 public ,但不允许显式使用 public 修饰
- java接口中可以定义静态常量和方法,C#接口中不允许包括任何静态成员
六、总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Smu30Hqi-1622174997929)(D:\jiang\AppData\Roaming\Typora\typora-user-images\image-20210528120030918.png)]
口中可以定义静态常量和方法,C#接口中不允许包括任何静态成员