什么是接口?接口的作用是什么?怎么使用接口?
归根到底,我们就是为了搞清楚这三个问题。那么我们就来聊一聊什么是接口?
首先我们要明白接口是一个比抽象类还要抽象的“类”,抽象类还可以通过多态来创建对象,而接口是没有对象的,也就是完全抽象。
那么接口的作用的是什么了?
接口可以理解为定义的一组通用的组件,或者是对外提供服务的功能模块。可以拆卸,就像是我们电脑里面的硬盘,手机里面的电池,接口通常作为实体类的成员属性,和类是附属关系,而不是包含关系。
作为初学者,在学习接口这一部分内容的时候,相信大家都会有所纠结和苦恼。一句话来形容,道理我都懂,你说的我也明白,可就是不会用,如何解决这一问题呢?
多看,多问,多敲
接下来我们先来看一下什么是接口的经典案例,就明白了怎么来使用接口:
- 防盗门案例
什么是防盗门案例?一张图让你清楚、
在防盗门案例中,防盗门作为子类继承“门”这个父类,同时又去实现“锁”和“门铃”这两个接口可谓是真的累啊!但是也没办法,“门”和接口没有关系,这个案例也跟多态扯不上联系,所有的实现继承都是靠子类“防盗门”来完成。
放代码根据图片自行理解:
- 父类“门”
//门类
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 "彩色";
}
}
测试图:
如果还有什么疑惑,不妨去看下我的其他博客,说不定会有收获。最后祝你学有所成!!!