接口(一)

接口(一),第1张

接口(一)

类:

- 类的方法是具体的,方法中的结构写好之后就不能改了

- 类是不完全抽象的,创建的对象是非常相似的

接口:

- 关键字: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();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5707322.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存