Java学习笔记(十三)——接口

本文深入解析了Java中的接口概念,探讨了接口如何实现类的多继承,以及如何通过接口规范类间协议,还介绍了接口的语法、实现方式和扩展机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口(interface)是 Java 程序设计语言常用的高级技术之一,它实际上就是一个纯的抽象类。我们知道,在抽象类中可以不定义或者说定义任意个抽象方法(抽象方法就是只有方法的原型设计,没有方法体实现的这样的方法),而“纯的抽象类”就是说这个抽象类里面的所有方法都是抽象方法。我们知道,Java 不支持类的多继承,但是使用接口可以变通地实现类的多继承。

接口
  • 接口中可以规定方法的原型:方法名、参数列表以及返回类型,但不规定方法主体。

  • 也可以包含基本数据类型的数据成员,但它们都默认为 static 和 final 。

接口的作用
  • 继承多个设计

  • 建立类和类之间的协议

    • 将类根据其实现的功能分组用接口代表,而不必顾虑它所在的继承层次,这样就可以最大程度地利用动态绑定,隐藏实现细节。
接口的语法声明格式
[接口修饰符] interface 接口名称 [extends 父接口名]{
    ... //方法的原型声明或静态常量
} 
  • 接口的数据成员一定要有初值,且此值将不能再更改,可以省略 final 关键字。
  • 接口中的方法必须是“抽象方法”,不能有方法体,可以省略 public 及abstract 关键字。

来个栗子尝尝:

声明一个接口 Shape2D,包括 π 和计算面积的方法原型

interface Shape2D{      // 声明 Shape2D 接口
    final double pi = 3.14;        // 数据成员一定要初始化
    public abstract double area();        // 抽象方法
}

在接口的声明中,允许省略一些关键字,也可声明如下

interface Shape2D{
    double pi = 3.14;
    double area();
}

由于接口里面只有方法的原型声明,没有方法体的实现,所以跟抽象类一样,接口也是不能够产生实例的,也就是说,接口不能实例化。所以我们不能 new 一个接口类型的对象出来。

那么我们定义好接口之后如何使用接口呢?

接口的实现

利用接口设计类的过程,称为接口的实现,使用 implements 关键字。

语法如下:

public class 类名称 implements 接口名称{
    ...// 在类中实现接口的所有方法
    ...// 本类中声明的更多变量和方法
}

注意: 必须实现接口中的所有方法,并且,来自接口的方法必须声明为 public。

栗子:

圆形类

class Circle implements Shape2D{
    double radius;

    public Circle(double r){
        radius = r;
    }

    public double area(){
        return (pi * radius * radius);
    }
}

矩形类

class Rectangle implements Shape2D{
    int width;
    int height;

    public Rectangle(int w,int h){
        width = w;
        height = h;
    }

    public double area(){
        return (width * height);
    }

测试类

public class InterfaceTester{
    public static void main(String args[]){
        Rectangle rect = new Rectangle(5,6);
        System.out.println("Area of rect = " + rect.area());
        Circle cir = new Circle(2.0);
        System.out.println("Area of cir = " + cir.area());

我们也可以声明接口类型的变量,并用它来访问对象

public class InterfaceTester{
    public static void main(String args[]){
        Shape2D var1,var2;
        var1 = new Rectangle(5,6);
        System.out.println("Area of var1 = " + var1.area());
        var2 = new Circle(2.0);
        System.out.println("Area of var2 = " + var2.area());
实现多个接口

语法如下:

public class 类名称 implements 接口名称1,接口名称2{
    ...// 在类中实现接口的所有方法
    ...// 本类中声明的更多变量和方法
}
接口的扩展

就像类与类之间可以有继承关系一样,接口与接口之间也可以有继承关系,这种继承关系叫做接口的扩展。

接口扩展的语法:

interface 子接口的名称 extends 接口名称1,接口名称2...{
    ...
}

要注意的一点是: 实现一个接口的类也必须实现其所有的超接口。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值