JavaSE18——接口

接口(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 circle
        rectangle.draw();  // 输出:Drawing a rectangle
    }
}

在上面的示例中,我们定义了一个接口Drawable,该接口只有一个抽象方法draw()。然后我们创建了两个实现该接口的类CircleRectangle。在Main类中,我们创建了circlerectangle对象,并调用了它们的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:接口定义了一组方法规范,使得不同类的对象可以通过相同的接口进行交互和使用。

你可能感兴趣的:(java,java,jvm,开发语言)