接口可以说是一个特殊的抽象类,接口里的方法都是抽象方法,

  接口的特点

   1、一个类可以实现多个接口,也可以在继承一个类后继续实现多个接口(多实现间接支持了类的多继承)

   2、接口可以继承另一个接口,并且可以继承多个

      之所以能继承多个的原因是接口中都是抽象方法,没有方法体,也就是没有方法的具体实现需要实现该接口的类自己来实现,这就不存在多继承时遇到相同 方法时不知道调用哪一个的问题;而类之所以不能继承多个  类的主要原因也就是调用的不确定性,如果两个父类有相同的方法子类调用该方法时不知道调用哪一个;

   3、接口是某一功能对外暴露的规则,是对事物的一个功能的拓展,能降低耦合性,并且可以多实现;

      举例:电脑的usb接口就是电脑连接鼠标、键盘等功能对外暴露的一个规则,是对电脑本身功能的一个扩展,能降低鼠标与电脑的耦合性,并且键盘.优盘都可以对该接口进行功能的实现,体现了多实现

   接口与抽象类的区别

    相同点:都是对某些事物的一个抽象描述,都不能被实例化

    不同点:1、抽象类中可以有抽象方法也可以有非抽象方法,非抽象方法可以被子类拿来直接使用

           接口中只能有抽象方法不可以有非抽象方法,并且接口中的成员都有固定修饰符:

            成员常量一般用public static final 来修饰

            方法一般用public abstract来修饰,但修饰符都可以省略不写

        2、抽象类是通过继承来体现其作用,子类与其的关系是 is a ,定义继承其所有子类的共性内容

           接口是通过实现来体现其作用,实现的类与其的关系是like a,定义实现其所有类的额外功能,需要这个功能则实现该接口不需要则不实现

java基础学习之接口的更多相关文章

  1. java基础学习总结-接口

    原文链接:http://www.cnblogs.com/xdp-gacl/p/3651121.html 一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如"金丝猴是 ...

  2. java基础学习总结——接口

    一.接口的概念 JAVA是只支持单继承的,但现实之中存在多重继承这种现象,如“金丝猴是一种动物”,金丝猴从动物这个类继承,同时“金丝猴是一种值钱的东西”,金丝猴从“值钱的东西”这个类继承,同时“金丝猴 ...

  3. 转载-java基础学习汇总

    共2页: 1 2 下一页  Java制作证书的工具keytool用法总结 孤傲苍狼 2014-06-24 11:03 阅读:25751 评论:3     Java基础学习总结——Java对象的序列化和 ...

  4. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  5. Java基础-Collection子接口之Set接口

    Java基础-Collection子接口之Set接口 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 学习Collection接口时,记得Collection中可以存放重复元素,也可 ...

  6. 尚学堂JAVA基础学习笔记

    目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 ...

  7. Java基础学习(2)

    Java基础学习(二) 面向对象 对象:客观存在的事物 面向对象:人具体关注的事物的某些信息 类:是模子,确定对象会拥有的特征(属性)和行为(方法) 对象的属性:对象具有的各种特征 对象的方法:对象能 ...

  8. Java基础学习-- 继承 的简单总结

    代码参考:Java基础学习小记--多态 为什么要引入继承? 还是做一个媒体库,里面可以放CD,可以放DVD.如果把CD和DVD做成两个没有联系的类的话,那么在管理这个媒体库的时候,要单独做一个添加CD ...

  9. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

随机推荐

  1. Array 转 Set

    Array 转 Set: Set<String> oldCandidateNames = new HashSet<String>(Arrays.asList(candidate ...

  2. java static语句的总结

    static 是静态方法,他的引用不需要对象,可以使用类名直接进行引用,当然也不需要this.      由于不需要对象,所以static方法内无法调用非static的方法或对象   至于为什么mai ...

  3. git push 远程新分支

    git clone #从远程克隆 进行一些编辑后 git add . git commit -m "xxx" git push #将master推送到master git chec ...

  4. Python sqlalchemy orm 多对多外键关联

    多对多外键关联 注:使用三张表进行对应关联 实现代码: # 创建3个表 配置外键关联 # 调用Column创建字段 加类型 from sqlalchemy import Table, Column, ...

  5. idea使用svn报错

    第一种情况:idea没有安装svn. 选择file→settings→plugins,在右侧框中搜索"SVN"(有的是subversion),选中搜索出来的东西,然后点击下面的in ...

  6. Docker常用命令详解

    docker ps 查看当前正在运行的容器 docker ps -a 查看所有容器的状态 docker start/stop id/name 启动/停止某个容器 docker attach id 进入 ...

  7. python链接Hive

    之前一直用thrift链接Hive,但在运行时总出现问题,一直报缺少模块的错误,装了这个模块,又报缺少那个模块,连了半天,全是泪啊! 原来thrift链接Hive的.py文件后续没人维护,是连不上的. ...

  8. A4988和CNC SHIELD使用方法 步进电机

    接线视频 点这看视频 来源 https://www.basemu.com/a4988_pinout_and_how_to_use.html 注意要点 A4988既要12V外部供电,也要5V逻辑供电 我 ...

  9. 1_Linux概述

    linux就是一套操作系统 //系统调用与内核如果能够参考硬件的功能函数并修改你的操作系统程序代码,那经过改版后的操作系统就能够在另一个硬件平台上面运行了,这个操作通常被称为"软件移植&qu ...

  10. mybatis分页插件PagePlugin

    查询的参数对象里面继承PageInfoWrapper类(也可以不继承这个类,但要保证查询参数对象里面必须要有一个PageInfo属性) 分页信息都在PageInfo这个类里,查询的时候,分页参数,填充 ...