Java面向对象— 接口

发布时间:2023年12月18日

Java接口是一种规范或者契约,用于定义一组行为(方法)的集合,但并不提供它们的具体实现。它们被用于实现类和客户端之间的解耦,以便在不修改类实现的情况下可以更改系统的功能。

以下是Java接口的详细信息:

1、接口声明

接口声明包含接口的名称、访问修饰符、关键字interface,以及它所继承的其他接口。

[访问修饰符] interface [接口名称] [extends 其他接口名称] {
    // 常量声明
    // 方法声明
}

2、接口常量

接口常量是接口的一部分,并且可以在任何实现该接口的类中使用,它们被声明为public、static和final。在接口中,只能定义常量,而不能定义变量。

public static final [数据类型] [常量名称] = [常量值];

3、接口方法

接口方法声明为public和abstract,这意味着接口只提供方法签名,而不提供实现。实现该接口的类必须提供方法的具体实现。

[访问修饰符] void [方法名称] ([参数列表]);

4、接口默认方法

默认方法是在接口中提供具体实现的方法。在Java 8中,可以在接口中定义默认方法,在Java 9中,还可以定义私有方法。默认方法声明为public,实现类可以使用它。默认方法可以被覆盖。

default [返回类型] [方法名称] ([参数列表]) {
    //方法体
}

5、接口静态方法

接口静态方法是在接口中提供静态实现的方法。它们声明为public和static,可以直接从接口中调用,而无需创建实现类的实例。

static [返回类型] [方法名称] ([参数列表]) {
    //方法体
}

6、接口继承

接口可以继承一个或多个其他接口,使用关键字extends,也可以继承类使用关键字implements。

[访问修饰符] interface [接口名称] extends [继承的接口名称] {
    //常量声明
    //方法声明
}

7、接口多态

Java接口支持多态,这意味着可以定义一个变量,其类型为接口,并且可以指向实现该接口的任何类的对象。

[接口名称] [变量名称] = new [实现类名称]();

8、接口与抽象类的区别

接口只提供方法签名,而不提供方法实现,而抽象类可以提供一些实现和成员变量。接口只包含常量和抽象方法,而抽象类可以包含实例方法、成员变量和常量。类只能继承一个类,但可以实现多个接口。

下面我们看一个实例:

定义一个接口:

public interface MyInterface {
    // 接口中的方法默认是public abstract的
    void method1();
    int method2(int a, int b);
}

实现接口的类必须提供接口中所定义方法的实现:

public class MyClass implements MyInterface {
    @Override
    public void method1() {
        // 方法实现
    }

    @Override
    public int method2(int a, int b) {
        // 方法实现
    }
}

使用接口:

public class Main {
    public static void main(String[] args) {
        MyInterface obj = new MyClass();
        obj.method1();
        int result = obj.method2(1, 2);
        System.out.println("Result: " + result);
    }
}

Java接口的一些注意事项:

1. 接口中的方法默认是public abstract的,但可以使用其它访问修饰符(如protected、private),但不推荐这样做。

2. 接口中可以定义常量(static final),但不能定义实例变量。

3. 接口中可以包含嵌套类型(如枚举、接口),但不能包含静态成员类。

4. 一个类可以实现多个接口,但要求所有接口中的方法都在该类中提供实现。

总之,Java接口是一种非常有用的抽象机制,可以帮助我们降低代码的耦合度,提高代码的可扩展性和可维护性。

文章来源:https://blog.csdn.net/weixin_63645714/article/details/132757877
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。