接口在我们现实生活中也都存在,将两种看似不相关的东西连接起来的都是接口。而Java中的接口是一个特殊的抽象类, 能够将两个不同模块连接起来,通过接口连接的内容,修改起来更加方便
现在想象着编写一个Usb接口,能够将用户在键盘和鼠标上点的东西电脑连接起来。
先编写一个Usb接口 Usb。里面有一个print抽象方法和一个click方法,代表键盘输入和鼠标点击,任何用户用接口的时候都有这两个方法提供给他。
interface Usb{
void print();
void click();
}
之后需要一个用户去使用键盘和鼠标,那么编写第一个用户类User1去连接接口,也就是实现implements接口内容,再将抽象方法重写(接口内的是抽象方法,抽象方法必须重写),也就是他在键盘打字还有点击鼠标左键
class User1 implements Usb{
//重写抽象方法
public void print(){
Sy("键盘输入:博客没人看");
}
public void click(){
Sy("点了一下鼠标左键!");
}
}
为了证明不止一个用户可以使用键盘和鼠标,也就是接口可以接很多个东西,再写第二个用户User2,他键盘输入和鼠标点击的内容和User1不同,抽象方法重写的也不同。
class User2 implements Usb{
//重写抽象方法和前一个用户不同
public void print(){
Sy("键盘输入了:我是用户2");
}
public void click(){
Sy("我点了鼠标右键");
}
}
现在接口的外部已经写好啦,有两个用户,那么再写一个接口另一端是我的计算机,计算机要包含接口这个属性,来知道接口中有哪些方法和再去调用他们。再设置一个总的方法make,可以调用Usb接口中的全部方法。
class MyComputer{
//封装一个属性
private Usb usb;
//给一个有参数构造方法,参数需要是Usb类型
public MyComputer(Usb usb) {
= usb;
}
//对private设置get和set方法
public Usb getUsb() {
return usb;
}
public void setUsb(Usb usb) {
= usb;
}
//设置一个make方法,代表电脑可以通过Usb实现Usb内部的两个方法
public void make(){
//同一个类中不需要用get和set方法
//也可以加上Usb usb = ();
u();
u();
}
}
电脑MyComputer这一侧就算是完成了,最后用一个测试文件去测试一下。这样通过接口修改一鞋内容就很方便,只需要Usb引用指向不同的子类对象,再通过创建一个引用,指向接受了Usb参数的MyComputer对象,实现方法的调用。
public class PortTest06 {
public static void main(String[] args) {
//创建Usb引用a,父类型引用指向子类型对象User1
Usb a = new User1();
//创建电脑对象
//这里传进去参数a,a是一个Usb类型数据
MyComputer b = new MyComputer(a);
//总方法make实现User1提供的两个方法
b.make();
//在创建一个Usb引用x,指向子类型对象User2
Usb x = new User2();
//创建电脑对象,传进去的是x
MyComputer y = new MyComputer(x);
//总方法make实现User2提供的两个方法
y.make();
}
}
山东掌趣网络科技