与类同级别,在创建的时候名字为interface。
语法: public interface 接口名{ }
1: 接口中的方法没有方法体 { } >> 抽象方法
比如:在鼠标监听器mouselistener里
public void mousePressed(MouseEvent e) { };
在接口中大括号里是没有方法的,它就类似于一种规范。
它就像产品中的规范和标准一样。
在一个产品需要的时候可以调用它使用这个标准。
2: 接口中定义的变量都是默认 static final 修饰,必须初始化赋值
static 接口名可以直接调用
final 修饰,之后不能再修改值
例子:门锁接口的实现
interface Lock{
public void unlock();// 开锁
public void lock();// 锁
}
//先创建一个开关锁门接口,此时的括号中是没有具体方法的,这个就像是开锁门的一种规范,后面都是用具体的方法来实现开锁门的功能
public class Door{
Lock doorLock = null;
public void setDoorLock(Lock doorLock){
this.doorLock = doorLock;
}//创建一个门对象,并初始化是否锁门
public void openDoor(){
if(doorLock == null){
System.out.println ("还没有配置锁");
return;
}
doorLock.unlock ();
}
public void closeDoor(){
if(doorLock == null){
System.out.println ("还没有配置锁");
return;
}
doorLock.lock ();
}
}
//开关锁的基本代码
// ---------以上代码在升级门的时候不需要改动 ----------------------
class KeyLock implements Lock{
@Override
public void unlock(){
System.out.println ("Key验证正确,解锁开门");
}
@Override
public void lock(){
System.out.println ("Key验证正确,锁门");
}
}//此方法为钥匙开门,先调用开锁门这个接口,也就是类似一个框架,这个拿钥匙的目的还是开锁门,这就是一开始接口的抽象方法的规范,但这次开锁的具体方法是拿钥匙
class FaceIDLock implements Lock{
@Override
public void unlock(){
System.out.println ("FaceID验证正确,解锁开门");
}
@Override
public void lock(){
System.out.println ("FaceID验证正确,锁门");
}
}//用面部识别开锁门
class PwdLock implements Lock{
@Override
public void unlock(){
System.out.println ("密码验证正确,解锁开门");
}
@Override
public void lock(){
System.out.println ("密码验证正确,锁门");
}
}//用密码开锁门
//在这之中接口的方法(框架)都没改变,改变的就是框架中的功能,使用接口就比较方便来实现程序的设计,让它有足够的框架来设计,而不是想到什么写什么
class ManageDoor{
public static void main(String[] args){
Door door = new Door ();
FaceIDLock faceIDLock = new FaceIDLock ();
door.setDoorLock (faceIDLock);
door.openDoor ();
door.closeDoor ();
}
}