上海网站建设上海网站制作如何建网站教程
接口(interface)
1 概述
在Java中,接口是一种抽象数据类型,它定义了一组方法(没有方法体),但没有实现这些方法的具体代码。接口可以看作是一种合约,它规定了类应该具有的行为。类可以实现一个或多个接口,从而承诺实现接口中定义的方法。
-
一方面,有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java不支持多重继承。有了接口,就可以得到
多重继承的效果
。 -
另一方面,有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有is-a的关系,仅仅是具有相同的行为特征而已。例如:鼠标、键盘、打印机、扫描仪、摄像头、充电器、MP3机、手机、数码相机、移动硬盘等都支持USB连接。
-
接口就是
规范
,定义的是一组规则,体现了现实世界中“如果你是/要…则必须能…”的思想。**继承是一个"是不是"的关系,而接口实现则是 "能不能"
**的关系。 -
接口的本质是
契约,标准,规范
,就像我们的法律一样。制定好后大家都要遵守。
接口(interface)是抽象方法和常量值定义的集合。
2 接口的特点:
1. 用interface来定义。
2. 接口中的所有成员变量都默认是由public static final
修饰的。
3. 接口中的所有抽象方法都默认是由public abstract
修饰的。
4. 接口中没有构造器。
5. 接口采用多继承机制。
3 语法格式
定义Java类的语法格式:先写extends,后写implements
- class SubClass extends SuperClass implements InterfaceA{ }
interface Drawable {void draw();
}class Circle implements Drawable {public void draw() {System.out.println("Drawing a circle");}
}class Rectangle implements Drawable {public void draw() {System.out.println("Drawing a rectangle");}
}public class Main {public static void main(String[] args) {Drawable circle = new Circle();Drawable rectangle = new Rectangle();circle.draw(); // 输出:Drawing a circlerectangle.draw(); // 输出:Drawing a rectangle}
}
在上面的示例中,我们定义了一个接口Drawable
,该接口只有一个抽象方法draw()
。然后我们创建了两个实现该接口的类Circle
和Rectangle
。在Main
类中,我们创建了circle
和rectangle
对象,并调用了它们的draw()
方法。
一个类可以实现多个接口,接口也可以继承其它接口。
实现接口的类中必须提供接口中所有方法的具体实现内容,方可实例化。否则,仍为抽象类。
接口的主要用途就是被实现类实现。(面向接口编程
)
与继承关系类似,接口与实现类之间存在多态性
接口的主要用途是实现代码的解耦和增加扩展性。通过接口,可以定义一组约定好的方法,然后由不同的类去实现这些方法,从而实现多态、降低耦合度,使代码更加灵活和可扩展。
Java中的类可以实现多个接口,也可以继承一个类同时实现接口。接口之间还可以进行继承,通过继承接口可以扩展接口的行为。
需要注意的是,接口中的方法不可以有方法体,常量是隐式静态最终的,接口不能被实例化。在Java 8之后,接口还可以包含默认方法和静态方法的实现。
一个类可以实现多个无关的接口
interface Runner { public void run();}
interface Swimmer {public double swim();}
class Creator{public int eat(){…}}
class Man extends Creator implements Runner ,Swimmer{public void run() {……}public double swim() {……}public int eat() {……}
}
4 接口的优点
接口的优点包括:
- 实现多继承:Java中一个类只能继承一个类,但可以实现多个接口,从而实现多重继承的效果。
- 解耦和灵活性:接口将定义和实现分离,可以提高代码的灵活性和可维护性,降低类之间的耦合度。
- 规范和约束:接口规定了类应该实现的方法,提供了一种强制约束机制。
- 提供标准化的API:接口定义了一组方法规范,使得不同类的对象可以通过相同的接口进行交互和使用。