类:
- 类的方法是具体的,方法中的结构写好之后就不能改了
- 类是不完全抽象的,创建的对象是非常相似的
接口:
- 关键字:interface
- 格式:public interface 接口名{}
- 特性:1.接口中的方法是抽象的,没有方法体
2.接口中的属性默认静态常量 static final 修饰,必须初始化
3.接口中所有的方法访问修饰符都是public,所以实现后的子类中对应方法也应该为public
举个例子:
public interface Lock{
static final String name = "ali";
static final int age = 20;
int add(int a, int b);
}
抽象方法:
- 接口既没有属于对象的属性,方法也没有方法体,不可以直接创建对象
- 接口可以作为一种类型存在。我们在定义属性、参数、返回值的时候,都需要类型;格式为:数据类型 变量名
接口的使用方式:
- 1.创建一个类实现接口
- 2.将接口中的抽象方法在此重写实现,加上方法体
public interface Lock {
public void open();
public void close();
}
public class Lock_ByFace implements Lock {
public void open(){
System.out.println("人脸识别开锁!");
}
public void close(){
System.out.println("人脸识别关门!");
}
}
分析:
1. Lock_ByFace是抽象实现的具体类
2. Lock_ByFace作为Lock接口的实现类:
(1)继承Lock类型,可以直接使用Lock接口中的静态常量
(2)必须重写Lock中的方法。
这是一个简单普通的Door类,可以实现开门和关门的操作。
public class Door {
public void open(){
System.out.println("拆下门闩,开门!");
}
public void close(){
System.out.println("架上门闩,关门!");
}
}
public class DoorManage {
public static void main(String[] args) {
Door olddooe=new Door();
olddooe.open();
olddooe.close();
}
}
但是我们想改变开关方式就比较困难,因为我们不可以“拆掉门”。
现在我们给门加锁:
public interface Lock {
public void open();
public void close();
}
public class Lock_ByFace implements Lock {
public void open(){
System.out.println("人脸识别开锁!");
}
public void close(){
System.out.println("人脸识别关门!");
}
}
public class Door {
private Lock doorLock; //接口是一种类型,可以声明属性,只要不创建对象,想做什么都可以
//给门配锁
public void setDoorLock(Lock doorLock){
this.doorLock=doorLock;
}
public void useLockOpen(){
doorLock.open();
}
public void useLockClose(){
doorLock.close();
}
}
public class DoorManage {
public static void main(String[] args) {
Door oldDoor=new Door();
//配锁
//Lock lock =new Lock() ,无法实例化
//使用Lock的实现类来创建对象
Lock_ByFace faceLock=new Lock_ByFace();
//配置锁对象
oldDoor.setDoorLock(faceLock);
oldDoor.useLockOpen();
oldDoor.useLockClose();
}
}
假如我们想进行升级,可以重新创建一个类,名字叫做密码开锁。
public class PwdLock implements Lock {
@Override
public void open(){
System.out.println("输入密码正确,开门!");
}
public void close(){
System.out.println("输入密码正确,关门!");
}
public class DoorManage {
public static void main(String[] args) {
Door oldDoor=new Door();
//配锁
//Lock lock =new Lock() ,无法实例化
PwdLock pwd=new PwdLock();
oldDoor.setDoorLock(pwd);
oldDoor.useLockOpen();
oldDoor.useLockClose();
}
}



