Java中关于接口的一些简单小结

接口在我们现实生活中也都存在,将两种看似不相关的东西连接起来的都是接口。而Java中的接口是一个特殊的抽象类, 能够将两个不同模块连接起来,通过接口连接的内容,修改起来更加方便

现在想象着编写一个Usb接口,能够将用户在键盘和鼠标上点的东西电脑连接起来。

先编写一个Usb接口 Usb。里面有一个print抽象方法和一个click方法,代表键盘输入和鼠标点击,任何用户用接口的时候都有这两个方法提供给他。

interface Usb{
    void print();
    void click();
}

之后需要一个用户去使用键盘和鼠标,那么编写第一个用户类User1去连接接口,也就是实现implements接口内容,再将抽象方法重写(接口内的是抽象方法,抽象方法必须重写),也就是他在键盘打字还有点击鼠标左键

class User1 implements Usb{
	//重写抽象方法
    public void print(){
        System.out.println("键盘输入:博客没人看");
    }

    public void click(){
        System.out.println("点了一下鼠标左键!");
    }
}

为了证明不止一个用户可以使用键盘和鼠标,也就是接口可以接很多个东西,再写第二个用户User2,他键盘输入和鼠标点击的内容和User1不同,抽象方法重写的也不同。

class User2 implements Usb{
    //重写抽象方法和前一个用户不同
    public void print(){
        System.out.println("键盘输入了:我是用户2");
    }

    public void click(){
        System.out.println("我点了鼠标右键");
    }
}

现在接口的外部已经写好啦,有两个用户,那么再写一个接口另一端是我的计算机,计算机要包含接口这个属性,来知道接口中有哪些方法和再去调用他们。再设置一个总的方法make,可以调用Usb接口中的全部方法。

class MyComputer{
    //封装一个属性
    private Usb usb;

    //给一个有参数构造方法,参数需要是Usb类型
    public MyComputer(Usb usb) {
        this.usb = usb;
    }

    //对private设置get和set方法

    public Usb getUsb() {
        return usb;
    }

    public void setUsb(Usb usb) {
        this.usb = usb;
    }

    //设置一个make方法,代表电脑可以通过Usb实现Usb内部的两个方法
    public void make(){
    	//同一个类中不需要用get和set方法
    	//也可以加上Usb usb = this.getUsb();
        usb.print();
        usb.click();
    }
}

电脑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();
    }
}
发布了9 篇原创文章 · 获赞 1 · 访问量 220

猜你喜欢

转载自blog.csdn.net/weixin_44632459/article/details/105244122