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

  接口的特点

   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. 怎么让table中的<td>内容向上对齐

    <td valign="top"></td>

  2. 校验input 修改当前值的校验获取值方式

    <input style="height: 18px; width: 90px;" name="nowQty" value="${ad.nowQ ...

  3. zabbix 乱码问题

    一.乱码原因 查看cpu负载,中文乱码如下 这个问题是由于zabbix的web端没有中文字库,我们最需要把中文字库加上即可 二.解决zabbix乱码方法 2.1 上传字体文件到zabbix中 找到本地 ...

  4. Qt::WindowFlags枚举类型解析

    在使用Qt设计的时候经常会看到QWidget控件的构造函数出现下面这样一句话: QWidget(QWidget *parent=0,Qt::WindowFlags f=0) QWidget *pare ...

  5. flutter中使用webview

    首先要安装一个插件:flutter_webview_plugin dependencies: flutter_webview_plugin: ^0.2.1+2 使用方法: new MaterialAp ...

  6. c#查找窗口的两种办法

    原文最早发表于百度空间2009-06-17 1.process.MainWindowTitle(这个只能获取一部分窗口)2.EnumWindows(用windows API)

  7. Docker 部署 elk + filebeat

    Docker 部署 elk + filebeat kibana 开源的分析与可视化平台logstash 日志收集工具 logstash-forwarder(原名lubmberjack)elastics ...

  8. layer(jQuery弹出层插件)

    弹窗alert:默认确定按钮+右上角关闭 top.layer.alert("请选择要删除的记录!",{shade: 0.3,offset:'250px'}); 弹窗alert:默认 ...

  9. Python3 tkinter基础 OptionMenu 将list导入下拉列表中

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  10. log4net:ERROR ConfigureFromXml called with null 'element' parameter

    场景重现 ASP.NET Core 下集成 log4net 时, 运行时报错如下: log4net:ERROR ConfigureFromXml called with null 'element' ...