接口

Posted 橘猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口相关的知识,希望对你有一定的参考价值。

/**
* 1.接口使用interface关键字来定义的
* 2.java中,接口和类是并列的结构
* 3.如何定义接口:定义接口中的成员
* 3.1 JDK7及以前:只能定义全局常量和抽象方法
* >全局常量:public static final的,但是书写时可省略不写(默认为public static final的)
* >抽象方法:public abstract的
*
* 3.2 JDK8及以后:除了定义全局常量和抽象方法外,还可以定义静态方法、默认方法
* 4.接口中不能定义构造器,意味着接口不可以实例化
* 5.java开发中,接口都是通过类去实现(implements)的方式来使用。
* 如果实现类覆盖了接口中的所有抽象方法,则此实现类可以实例化。
* 如果实现类没有覆盖接口中的所有抽象方法,则此实现类仍为一个抽象类
* 6.java类可以实现多个接口----->弥补了java单继承性的局限性。
* >格式:class AA extends BB implements CC,DD,EE
* 7. 接口与接口之间可以继承,而且可以多继承,
* ********************************
* 8.接口的具体使用,体现多态性
* 9.接口,实际上可看作是一种规范
*
* 面试题:抽象类与接口有哪些异同?
*
*/
 1 package com.fu.java2;
 2 
 3 
 4 public class InterfaceTest {
 5     public static void main(String[] args) {
 6         System.out.println(Flyable.MAX_SPEED);
 7         System.out.println(Flyable.MIN_SPEED);
 8         Plane plane = new Plane();
 9         plane.fly();
10     }
11 }
12 
13 interface Flyable{
14     //全局常量
15     public static final int MAX_SPEED = 7900;//第一宇宙速度
16     int MIN_SPEED = 1;//省略了public static final
17 
18     //抽象方法
19     public abstract void fly();
20     void stop();//省略了public abstract
21 
22 }
23 
24 interface Attackable{
25     void attack();
26 }
27 
28 class Plane implements Flyable{
29 
30     @Override
31     public void fly() {
32         System.out.println("飞机通过引擎起飞");
33     }
34 
35     @Override
36     public void stop() {
37         System.out.println("驾驶员减速停止");
38     }
39 
40 }
41 
42 class Bullet extends Object implements Flyable,Attackable{
43 
44     @Override
45     public void fly() {
46 
47     }
48 
49     @Override
50     public void stop() {
51 
52     }
53 
54     @Override
55     public void attack() {
56 
57     }
58 }
59 
60 interface AA{
61     void method1();
62 }
63 interface BB{
64     void method2();
65 }
66 interface CC extends AA,BB{
67 
68 }

 

package com.fu.java2;
/**
 *接口的使用
 * 1.接口使用上也满足多态性
 * 2.接口实际上就是定义了一种规范
 * 3.开发中,体会面向接口编程0
 *
 *
 */
public class USBTest {
    public static void main(String[] args) {
        Computer computer = new Computer();
        //1.创建了接口的非匿名实现类的非匿名对象
        Flash flash = new Flash();
        computer.transferDate(flash);

        //2.创建了接口的非匿名实现类的匿名对象
        computer.transferDate(new Printer());

        //3.创建了接口的匿名实现类的非匿名对象
        USB phone = new USB() {
            @Override
            public void start() {
                System.out.println("手机开始工作");
            }

            @Override
            public void stop() {
                System.out.println("手机结束工作");
            }
        };
        computer.transferDate(phone);

        //4.创建了接口的匿名实现类的匿名对象
        computer.transferDate(new USB() {
            @Override
            public void start() {
                System.out.println("MP3开始工作");
            }

            @Override
            public void stop() {
                System.out.println("MP3手机结束工作");
            }
        });
    }
}

class Computer{
    public void transferDate(USB usb){// USB usb = new Flash();
        usb.start();
        System.out.println("具体的传输数据的细节");
        usb.stop();

    }
}

interface USB{
    //常量:定义了长、宽、最大最小的传输速度等

    void start();
    void stop();
}

class Flash implements USB{

    @Override
    public void start() {
        System.out.println("U盘开启工作");
    }

    @Override
    public void stop() {
        System.out.println("U盘结束工作");
    }
}

class Printer implements USB{

    @Override
    public void start() {
        System.out.println("打印机开启工作");
    }

    @Override
    public void stop() {
        System.out.println("打印机结束工作");
    }
}

 

 
此为本人学习笔记,若有错误,请不吝赐教

以上是关于接口的主要内容,如果未能解决你的问题,请参考以下文章

java 代码片段

无法通过接口获取与片段通信的活动

将接口从片段传递到kotlin中的活动

是否可以动态编译和执行 C# 代码片段?

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

前端防扒代码片段