JAVA 接口

概述

接口相当于抽象类,但接口中 所有方法 都 没有方法体

接口 不能被实例化,接口 没有构造方法,没有成员变量

很好的体现了面向对象的编程思想

作用

  • 接口主要就是 声明方法,相当于制定规范、标准
  • 弥补java单继承的缺点

类比

早年手机,不同手机厂商的手机,充电口互不通用,导致十分混乱

接口 相当于 USB接口,通过制定 USB接口 规范,其他厂家按照该规范生产制造USB接口,符合USB接口的设备,都可以 充电 或 传输数据,达到通用的目的

定义

与定义类方式相似,但使用 interface 关键字。它也会被编译成 .class 文件,但不是类,而是另外一种引用数据类型

public interface 接口名称 { 
 // 抽象方法
}

声明方法

使用 public abstract 关键字修饰,可以 省略,不能有方法体。 代码如下:

public interface USB { 
    public abstract void chongdian();
}

接口的使用

类与接口的关系为 实现 关系,即:类实现接口,该类称为接口的实现类。

实现的动作类似继承,格式相仿,只是关键字不同,实现使用 implements 关键字。

普通类(非抽象类)实现接口:

  1. 必须重写接口中所有抽象方法。

实现

定义实现类:

public class Android implements USB {
    @Override
    public void chongdian() {
        System.out.println("充电");
    }
}

定义测试类:

public class Test {
    public static void main(String[] args) {
        Android ad=new Android();
        //由于android类实现了USB接口,那么就一定可以调用android类对象的chongdian()
        ad.chongdian();
    }
}

实现多个接口

之前学过,在继承体系中,一个类只能继承一个父类。而对于接口而言,一个类是可以实现多个接口的,这叫做接
口的多实现。并且,一个类能继承一个父类,同时实现多个接口。

实现格式:

class 类名 [extends 父类名] implements 接口名1,接口名2,接口名3... { 
// 重写接口中抽象方法
}

抽象方法

实现多个接口时,实现类必须重写所有抽象方法

例子:

定义 耳机 接口:

public interface Erji {
    void bofang();
}

定义实现类,实现多个接口:

public class Android implements USB,Erji {
    @Override
    public void chongdian() {
        System.out.println("充电");
    }

    @Override
    public void bofang() {
        System.out.println("播放声音");
    }
}

多接口存在同名抽象方法

实现多个接口时,如果抽象方法有重名的,只需要重写一次

接口的继承

一个接口可以继承(extends)另一个接口

//当子接口继承父接口,也就拥有了父接口的方法
public interface TYPEC extends USB {
    void kuaiSuChongDian();
}
public class Huawei implements TYPEC{
    @Override
    public void kuaiSuChongDian() {
        System.out.println("快速充电");
    }

    @Override
    public void chongdian() {
        System.out.println("充电");
    }
}

其他成员特点

  • 接口中,无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰。
  • 接口中,没有构造方法,不能创建对象。
  • 接口中,没有静态代码块。

原文出处:/show_1EF4reK41Kow.html