Java接口经典案例,教你认清接口真面目

什么是接口?接口的作用是什么?怎么使用接口?

归根到底,我们就是为了搞清楚这三个问题。那么我们就来聊一聊什么是接口?
首先我们要明白接口是一个比抽象类还要抽象的“类”,抽象类还可以通过多态来创建对象,而接口是没有对象的,也就是完全抽象。

那么接口的作用的是什么了?
接口可以理解为定义的一组通用的组件,或者是对外提供服务的功能模块。可以拆卸,就像是我们电脑里面的硬盘,手机里面的电池,接口通常作为实体类的成员属性,和类是附属关系,而不是包含关系。

作为初学者,在学习接口这一部分内容的时候,相信大家都会有所纠结和苦恼。一句话来形容,道理我都懂,你说的我也明白,可就是不会用,如何解决这一问题呢?
多看,多问,多敲
接下来我们先来看一下什么是接口的经典案例,就明白了怎么来使用接口:

- 防盗门案例
什么是防盗门案例?一张图让你清楚、
在这里插入图片描述
在防盗门案例中,防盗门作为子类继承“门”这个父类,同时又去实现“锁”和“门铃”这两个接口可谓是真的累啊!但是也没办法,“门”和接口没有关系,这个案例也跟多态扯不上联系,所有的实现继承都是靠子类“防盗门”来完成。
放代码根据图片自行理解:

  1. 父类“门”
//门类
public abstract class Door implements Lock {
      //开门方法
      public abstract void open();
     // 关门方法
     public abstract void close();
}

2.子类“防盗门”继承父类并实现接口

//防盗门类
public class TheftproofDoor extends Door implements DoorBell{
    @Override
    public void open() {
        System.out.println("用力推,门打开了。");
    }
    @Override
    public void close() {
        System.out.println("轻轻拉门,门关上了。");
    }
    @Override
    public void lockUp() {
        System.out.println("插进钥匙,向左旋转钥匙三圈,锁上了,拔出钥匙。");
    }
    @Override
    public void openLock() {
        System.out.println("插进钥匙,向右旋转钥匙三圈,锁打开了,拔出钥匙。");
    }
    @Override
    public void ringDoorbell() {
        System.out.println("按响门铃 铃铃铃......");
    }
}

“锁”和“门铃”两个接口

//锁
public interface Lock {
    //锁门
    public abstract void lockUp();
    //开锁
    public abstract void openLock();
}
//门铃类
public interface DoorBell {
    //按响门铃方法
    public abstract void ringDoorbell();
}

测试图
在这里插入图片描述

- 打印机案例
话不多说,放图
在这里插入图片描述
图中所展现的是接口和类是附属关系,所以可以将接口作为成员属性,接口名就成了一个引用数据类型,同样有构造方法,get,set方法,同样也有实体类来实现接口。
话不多说,放代码

//打印机
public class Printer{
   private Paper pap;//纸张
   private Inkbox ink;//墨盒
    public Printer(Paper pap, Inkbox ink) {
        this.pap = pap;
        this.ink = ink;
    }
    public Printer() {
    }
    public Paper getPap() {
        return pap;
    }
    public void setPap(Paper pap) {
        this.pap = pap;
    }
    public Inkbox getInk() {
        return ink;
    }
    public void setInk(Inkbox ink) {
        this.ink = ink;
    }
     // 打印
    public void print(){
         //获取颜色
         Inkbox ib =this.getInk();
         //获取纸张
         Paper pp  = this.getPap();
         System.out.println("使用"+ib.color()+
                "墨盒在"+pp.size()+"纸张上打印");
    }

接口:

//纸张接口
public interface Paper {
 //尺寸
  abstract String size();
}

//墨盒接口
public interface Inkbox {
     //颜色
    String color();
}

纸张实现类:A4和B5

public class A4 implements Paper{
    @Override
    public String size() {
      return   "A4";
    }
}
public class B5 implements Paper{
    @Override
    public String  size() {
         return "B5";
    }
}

墨盒实现类:黑白和彩色

public class BwColor implements Inkbox{
    @Override
    public String color() {
        return  "黑白";
    }
}
public class Color implements Inkbox{
    @Override
    public String color() {
     return  "彩色";
    }
}

测试图:
在这里插入图片描述
如果还有什么疑惑,不妨去看下我的其他博客,说不定会有收获。最后祝你学有所成!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值