• Android-Java-接口Interface


    接口Interface 与 抽象类不同:

      抽象类关注的是事物本质,例如:水果Fruit 属于抽象的,说去买水果 是模糊的概念 是抽象的概念 不具体,到底买什么水果不知道,而水果包含了 香蕉,橘子 很多很多;

      接口关注的是事物的能力,例如:电脑有USB接口,只要你的数据线满足USB接口规定的功能,你就可用使用,只要你的充电线满足了USB接口规定的功能,你就可用充电;


    接口有两大区域:

    领域一 全局常量,注意:在接口定义的所有变量都是全局常量,就算你不写 public static final ,在接口中会自动补齐 public static final,隐式的

    1.为什么说接口里面所有的变量都是常量呢,被final修饰?

    2.为什么说接口里面的所有变量都被static修饰,属于静态呢?

     

     

    3.为什么说接口里面的所有变量权限都是 public 呢?

    经过以上三个问题就明白,原来在接口里面定义的所有变量都是 -(全局常量) ,可以用类名.常量,项目中任何类都可以 类名.常量;

    在Android开发过程中,例如:给整个APP配置全局常量信息,可以向以下这样:

    定义APPConfig接口: 

    package android.java.oop19;
    
    public interface APPConfig {
    
        /**
         * 注意:在接口定义的所以变量 都是 public static final 全局常量
         * 就算你不写 public static final ,在接口中会自动补齐 public static final,隐式的
         */
    
        String CONFIG_1 = "Android-自定义控件";
    
        String CONFIG_2 = "Android-Service";
    
        public static final String CONFIG_3 = "Android-Activity";
    
        public static final String CONFIG_4 = "Android-Broadcast Receiver";
    
        int CONFIG_5 = 1000;
    
        boolean CONFIG_ISSTUDY = true;
    
        public static final double CONFIG_6 = 99999999.00;
    
        public static final float CONFIG_7 = 876734.00F;
    
        String CONFIG_8 = "Android-Content Provider";
    
        String CONFIG_9 = "Android-H5";
    }

    main测试方法: 

    package android.java.oop19;
    
    public class Demo {
    
        public static void main(String[] args) {
    
            System.out.println(APPConfig.CONFIG_1 + "
    "
                    + APPConfig.CONFIG_2 + "
    "
                    + APPConfig.CONFIG_3 + "
    "
                    + APPConfig.CONFIG_4 + "
    "
                    + APPConfig.CONFIG_5 + "
    "
                    + APPConfig.CONFIG_6 + "
    "
                    + APPConfig.CONFIG_7 + "
    "
                    + APPConfig.CONFIG_8 + "
    "
                    + APPConfig.CONFIG_9 + "
    "
                    + APPConfig.CONFIG_ISSTUDY + "
    "
            );
    
        }
    
    }

     

    执行结果:




    领域二-抽象方法:在接口中定义的所有方法,都是抽象方法,就算不写 public abstract ,接口中也会自动补齐 public abstract 隐式的;

    package android.java.oop19;
    
    public interface IUsb {
    
        /**
         * 不写 public abstract 也会自动补齐public abstract 
         */
        void usbInterface1();
    
        /**
         * 以上usbInterface1方法,相当于以下方法
         */
        public abstract void usbInterface1();
    
    }

    USB案例:

    定义IUsb接口:

    package android.java.oop19;
    
    public interface IUsb {
    
        /**
         * 第一个USB接口
         */
        public abstract void usbInterface1();
    
        /**
         * 第二个USB接口
         */
        public abstract void usbInterface2();
    
        /**
         * 第三个USB接口
         */
        void usbInterface3();
    
        /**
         * 第四个USB接口
         */
        void usbInterface4();
    
    
        // ....
    
    }

    定义IUsb接口的实现类 UsbImple:

    package android.java.oop19;
    
    public class UsbImple implements IUsb {
    
        /**
         * 第一个USB接口
         */
        @Override
        public void usbInterface1() {
            System.out.println("此接口正在给手机充电中....");
        }
    
        /**
         * 第二个USB接口
         */
        @Override
        public void usbInterface2() {
            System.out.println("此接口正在给移动硬盘传输资料中....");
        }
    
        /**
         * 第三个USB接口
         */
        @Override
        public void usbInterface3() {
            System.out.println("此接口正在给平板充电中....");
        }
    
        /**
         * 第四个USB接口
         */
        @Override
        public void usbInterface4() {
            System.out.println("此接口正在给无线网卡使用中....");
        }
    }

    main测试方法:

    package android.java.oop19;
    
    public class Demo {
    
        public static void main(String[] args) {
    
            IUsb iUsb = new UsbImple();
    
            iUsb.usbInterface1();
    
            iUsb.usbInterface2();
    
            iUsb.usbInterface3();
    
            iUsb.usbInterface4();
    
        }
    
    }

    执行结果:

  • 相关阅读:
    jQuery中添加自定义或函数方法
    一定要明白采取是哪种提交方式,表…
    基本数据类型
    python之运算符
    Java之递归
    【偏序问题】三维偏序,四维偏序
    【复习笔记】主席树
    【bzoj1901】dynamic ranking(带修改主席树/树套树)
    【bzoj4530】大融合(LCT的子树维护)
    POJ1008 Maya Calendar
  • 原文地址:https://www.cnblogs.com/android-deli/p/10353163.html
Copyright © 2020-2023  润新知