- 为什么要接口?
Java仅支持单继承,子类在继承父类的同时未能实现某种功能
- 什么是接口?
接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合,但是没有方法的实现。从这个角度讲,接口可以看作一种特殊的”抽象类”,但是采用与抽象类完全不同的语法来表示,两者的设计理念也是不同的,抽象类利于代码复用,接口利于代码的扩展和维护
- 定义接口,实现接口
定义:
访问修饰符 interface 接口名 extends 父接口1,父接口2,.....
{
//常量定义
//方法定义
}
实现:
访问修饰符 类名 extends 父类名 implements 接口1,接口2,.....
{
//类成员
}
声明接口,实例化类(类似于父类引用子类对象)
- 接口运用规则
- 接口的命名规则与类相同。如果字符是public ,则该接口在整个项目中可见,如果省略修饰符,则该接口
只在当前包中可见
- 接口中可以定义常量,不能定义变量。接口中的属性都会自动用public static final 修饰,即接口中的属性都是全局静态
常量。接口中的常量必须在定义时指定初始值。
- 接口中的所有方法都是抽象方法,接口中的所有方法都会自动用public abstract 修饰,接口中只有全局抽象方法。
- 和抽象类一样接口也不能实例化,接口中不能有构造方法(抽象类可以有构造方法)
- 接口之间可以通过extends 实现继承关系,一个接口可以继承多个接口,但接口不能继承类
- 接口的实现类必须实现接口的全部方法,否则必须定义为抽象类
- 一个类只能有一个直接父类,但可以通过implements实现多个接口。当类在继承父类的同时又实现了多个接口时,extends必须位于implements之前
- 接口表示一种能力(has a)
一个类实现了某个接口,就表示这个类具备了某种能力。
- 接口的好处
接口不仅弥补了java只支持单继承的缺点,还利于扩展和维护。接口类似于一个组件,需要时可以自由装。从使用角度来讲,接口和抽象类的区别在于抽象类利于代码复用,接口利于代码维护
- 接口表示一种约定
接口体现了约定和实现相分离的原则,通过面向接口编程,可以降低代码之间的耦合性,提高代码的可扩展性可维护性。
面向接口编程就意味着:开发系统时,主体架构使用接口,接口构成系统的骨架,这样可以通过更换实现接口的类来实现
更换系统
- 在C#中的接口
定义:
访问修饰符 interface 接口名:接口1,父接口2,...
{
//属性定义
//方法定义
}
实现:
访问修饰符 class 类:父类名,接口1,父接口2,...
{
}
9.C#接口运用规则
- 接口之间可以通过冒号”:“来实现继承关系,一个接口可以继承多个接口,但接口不能继承类。
类只能继承一个父类,但可以实现多个接口,使用冒号”:“来继承类并实现接口。
- 接口定义零个或多个成员,成员主要是方法,属性和索引器。接口中不能包含常量,变量或构造方法
也不能包含任何静态成员
- 接口中成员访问权限是public,定义接口是显示指定任何访问修饰符是非法的
- 接口名由一个或多个单词组成,首字母大写,其余个单词首字母大写
10.Java 与 c# 接口的区别
- Java中通过extends来继承父接口,类通过implements来实现接口;C#通过”:“来实现这两种功能
- Java接口中的成员变量(属性)都是常量,自动用public static final 来修饰;C#接口中不允许存在成员变量可以有属性。
- Java接口中属性和方法都可以使用public修饰;C#默认为public,但不允许显示使用public修饰
- Java接口中可以定义静态常量和方法;C#中不允许包含任何静态成员;