一、什么是接口
定义:接口(interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合。接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口和类的区别:
接口只由抽象方法和全局常量组成,可以多重继承。(接口声明了一组能力,但它自己没有实现这个能力,它只是一个约定)
而抽象类中存在变量,只可以单继承。
二、定义一个人接口
interface
interface A{
public static final String M = "hello";//全局变量
public abstract void print();//抽象方法
}
三、使用接口
1、由于接口里面存在抽象方法,所以接口对象不能直接使用关键字new进行实例化。接口的使用原则如下:
(1)接口必须要有子类,但此时一个子类可以使用implements关键字实现多个接口;
(2)接口的子类(如果不是抽象类),那么必须要覆写接口中的全部抽象方法;
(3)接口的对象可以利用子类对象的向上转型进行实例化。
package com.wz.interfacedemo;
interface A{//定义一个接口A
public static final String MSG = "hello";//全局常量
public abstract void print();//抽象方法
}
interface B{//定义一个接口B
public abstract void get();
}
class X implements A,B{//X类实现了A和B两个接口
@Override
public void print() {
System.out.println("接口A的抽象方法print()");
}
@Override
public void get() {
System.out.println("接口B的抽象方法get()");
}
}
public class TestDemo {
public static void main(String[] args){
X x = new X();//实例化子类对象
A a = x;//向上转型
B b = x;//向上转型
a.print();
b.get();
}
}
运行结果:
接口A的抽象方法print()
接口B的抽象方法get()
2、子类可以同时实现接口和继承抽象类。
class 子类 [extends 父类] [implemetns 接口1,接口2,...] {}
对于接口,里面的组成只有抽象方法和全局常量,所以很多时候为了书写简单,可以不用写public abstract 或者public static final。并且,接口中的访问权限只有一种:public,即:定义接口方法和全局常量的时候就算没有写上public,那么最终的访问权限也是public。(但在定义接口的时候强烈建议在抽象方法前加上public)