zoukankan      html  css  js  c++  java
  • 049_面向对象_22_接口详解

    一、接口的概念

      接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。接口中只有方法的定义,没有方法的实现

    二、定义接口格式
      [访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {

        常量定义
        方法定义
      }

      访问修饰符:只能是public或默认。

      接口名:和类名采用相同命名机制

      extends:接口可以多继承且多个接口之间用,分隔

      接口中的属性只能是常量,总是:public static final 修饰。不写也是。

      方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract.

    三、类、抽象类、接口

      1、类:只有具体实现。

      2、抽象类:具体的规范(抽象的方法)和实现都有。

      3、接口:只有规范。

    四、接口和抽象类
      1、接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
      2、抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范。
      3、从接口的实现者角度看,接口定义了可以向外部提供的服务。
      4、从接口的调用者角度看,接口定义了实现者能提供那些服务。
      5、接口是两个模块之间通信的标准,通信的规范。如果能把你要设计的系统之间模块之间的接口定义好,就相当于完成了系统的设计大纲,剩下的就是添砖加瓦的具体实现了。大家在工作以后,做系统时往往就是使用“面向接口”的思想来设计系统。

    五、演示示例  

    package edu.aeon.test;
    /**
     * [说明]:接口的定义
     * @author aeon
     *
     */
    public interface MyInteface {
        // 接口中只有常量和抽象方法
        /* public static final */ 
        String MAX_GREAD = "BOSS";
        int MAX_SPEED = 120;
    
        /*public abstract */ void test01();
    
        public int test02(int a, int b);
    }

    测试结果截图:

      

    package edu.aeon.test;
    
    /**
     * [说明]:测试接口的多继承
     * 
     * @author aeon
     * 测试结果:一个接口A继承了多个接口(B,C,D..),那么如果有个类去实现这个接口A、则要实现接口(A,B,C,D...)里面的所有方法
     * 现实中比如接口A是你的老板、接口B是你的老板娘、接口C是你的上级某领导、那么ABC所规定的你必须都要去执行。
     */
    public interface InterfaceA {
        void aaa();
    }
    
    interface InterfaceB {
        void bbb();
    }
    
    interface InterfaceC extends InterfaceA, InterfaceB {
        void ccc();
    }
    
    class TestClass implements InterfaceC {
    
        @Override
        public void aaa() {
            System.out.println("TestClass.aaa()");
        }
    
        @Override
        public void bbb() {
            System.out.println("TestClass.bbb()");
        }
    
        @Override
        public void ccc() {
            System.out.println("TestClass.ccc()");
        }
    }

    六、总结

    1.子类通过implements来实现接口中的规范
    2.接口不能创建实例,但是可用于声明引用变量类型。
    3.一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
    4.接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。
    5.常量必然是:public static final。我们不加这些修饰符,也是这样。
    6.方法必然是:public abstrac。我们不加这些修饰符,也是这样。
    7.接口完全支持多继承。和类的继承类似,子接口扩展某个父接口,将会获得父接口中所定义的一切。

     

    如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

  • 相关阅读:
    用纯 javascript 提高博客访问量
    大龄程序员交流
    Git 本地仓库操作基本命令
    SoapUI登录测试(2)-- 断言
    SoapUI测试登录
    deleteMany is not a function
    jQuery contextMenu使用
    安装MongoDB -- Windows平台
    TortoiseGit 图标不显示
    C#的自定义滚动条
  • 原文地址:https://www.cnblogs.com/aeon/p/9977432.html
Copyright © 2011-2022 走看看