先来看下抽象类和抽象方法

抽象类:用abstract关键字来修饰,包含抽象方法的类必须声明为抽象类。

抽象方法:定义方法时只给出方法头,而不给出内部实现代码,也用abstract修饰。

(抽象类不一定有抽象方法,但有抽象方法的类一定是抽象类)

接口:就是抽象方法和常量值的集合。本质上讲,接口是一种特殊的抽象类。

  接口中定义的属性必须是public static final 的因此可以省略。接口中定义的属性值在实现类中不能被更改。

格式: [public] interface interfaceName [extends SuperInterfaceList] {......//常量定义和方法定义}

一个类在继承一个父类的同时可以实现一个或者多个接口,extends必须在implements之前。

interface It{void f();int i=10;
}class A implements It{public void f(){System.out.println("Words");}
}class M{public static void main(String[] args){// It it=new It();//error 接口无法newIt it=new A();it.f(); }
}

  总结:

(1)接口用于描述系统对外提供的所有服务,因此接口中的成员常量和方法都必须是公开(public)类型的,确保外部使用者能访问它们;

(2)接口仅仅描述系统能做什么,但不指明如何去做,所以接口中的方法都是抽象(abstract)方法;

(3)接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态(static)变量;

(4)接口的中的变量是所有实现类共有的,既然共有,肯定是不变的东西,因为变化的东西也不能够算共有。所以变量是不可变(final)类型,也就是常量了。

(5) 接口中不可以定义变量?如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。有的人会说了,没有关系,可以通过 实现接口的对象的行为来修改接口中的属性。这当然没有问题,但是考虑这样的情况。如果接口 A 中有一个public 访问权限的静态变量 a。按照 Java 的语义,我们可以不通过实现接口的对象来访问变量 a,通过 A.a = xxx; 就可以改变接口中的变量 a 的值了。正如抽象类中是可以这样做的,那么实现接口 A 的所有对象也都会自动拥有这一改变后的 a 的值了,也就是说一个地方改变了 a,所有这些对象中 a 的值也都跟着变了。这和抽象类有什么区别呢,怎么体现接口更高的抽象级别呢,怎么体现接口提供的统一的协议呢,那还要接口这种抽象来做什么呢?所以接口中 不能出现变量,如果有变量,就和接口提供的统一的抽象这种思想是抵触的。所以接口中的属性必然是常量,只能读不能改,这样才能为实现接口的对象提供一个统 一的属性。

通俗的讲,你认为是要变化的东西,就放在你自己的实现中,不能放在接口中去,接口只是对一类事物的属性和行为更高层次的抽象。对修改关闭,对扩展(不同的实现 implements)开放,接口是对开闭原则的一种体现。

转载于:https://www.cnblogs.com/isawu/p/5515312.html

Interface接口相关推荐

  1. interface接口_golang 基础(Four) 接口进阶

    参考 Understanding Go Interface 感谢 francesc 分享 接口 我们编程中少不了对接口使用和设计,无论你是使用哪种语言或多或少都会使用到**接口**.即使你说明重来没有 ...

  2. 【C# interface接口】模拟MP3/AVI播放器

    注意:本程序仅模拟播放器功能,点击按钮时只会输出一句话,并未真正实现播放. 对接口的理解,见我的另一篇博客,里面有详细说明:[C# interface接口]对接口的理解.接口的使用方式(最通俗的解释) ...

  3. PHP interface 接口继承(一丶单接口继承)

    接口可以认为是规范类的模板,具体怎么运行操作还是需要看继承的子类怎么写,具体需要注意的的地方与写法如下所示: interface 接口中的方法必须为 public 公开的: <?php inte ...

  4. Interface接口自动化登录图文验证码问题的解决办法

    简介:我这段时间新进了一家医疗公司,为了测试的质量和效率能提升,我们需要做接口自动化测试,碰到的第一个拦路虎就是登录时的验证码,本来我是叫开发帮忙在测试环境去掉,线上环境再加上,但是开发觉得麻烦,说为 ...

  5. Golang interface 接口详细原理和使用技巧

    文章目录 Golang interface 接口详细原理和使用技巧 一.Go interface 介绍 interface 在 Go 中的重要性说明 interface 的特性 interface 接 ...

  6. Java面向对象之interface接口

    文章目录 (1)基本概念 (2)语法格式 (3)基本原则 (4)注意事项 (5)案例 (6)JDK内置的两大接口 (7)抽象类和接口的区别 提示:以下是本篇文章正文内容,Java系列学习将会持续更新 ...

  7. 12、Interface (接口)克隆

    文章目录 (一)Interface Note 1.概念 2.基本语法 声明接口 继承接口 实现接口 3.特点 4.抽象类与接口的区别 共同点 区别 选择 5.克隆 附:抽象类 PK 接口 (二)Int ...

  8. Go语言-Go interface 接口的最佳实践

    文章目录 Go语言-Go 接口的最佳实践 什么是Golang中的interface 编写接口的最佳实践 1. 保持interfaces足够小 2. Interfaces Should Have No ...

  9. abstract(抽象类)与interface(接口)的区别

    文章目录 前言 一.abstract(抽象类) 1.用abstract关键字修饰方法 1.用abstract关键字修饰类 二.interface(接口) 总结 前言 abstract(抽象类)与int ...

  10. abstract类与interface接口的区别

    abstract类与interface接口的区别:     abstract类:在一个类中的方法被abstract关键字修饰并且这个方法没有方法体,则这个类也必须使用abstract关键字修饰则这个类 ...

最新文章

  1. RESTful之路由Routers
  2. php 单词替换,如何在PHP中替换字符串中的单词?
  3. 计算机病毒与信息安全论文,信息安全与计算机病毒……毕业论文.doc
  4. 关于C++默认拷贝构造函数产生的问题的讨论
  5. Collections.min()和Collections.max()的使用
  6. orm2 中文文档 3.3 模型钩子
  7. 怎么将pom文件mysql驱动修改版本_JDBC-MySql基础操作详解
  8. P5 MySQL数据类型和类型选择
  9. 用友修改服务器名称,用友修改服务器地址
  10. C语言中的strcmp函数的作用是什么,c语言strcmp函数用法是什么?
  11. CSDN 社区年终总结|回顾 2021
  12. Asia/Shanghai与GMT-8的区别
  13. 用计算机计算圆的面积,周长直径换算器在线(圆的面积在线计算器)
  14. 【十八掌●武功篇】第七掌:MapReduce之倒排索引
  15. Pcb课程设计2(GD32E230核心板)
  16. 面试——讲讲什么是happens-before?
  17. python解决租房问题_高德API+Python帮你解决租房问题
  18. 教你如何解决VS2015的30天试用期已过即VS2015许可证已过期的问题,使用激活 密钥
  19. java《面向对象综合题》
  20. 前端面试题 —— HTML

热门文章

  1. Mysql datadir change on ubuntu
  2. 简单盘点手游开发引擎
  3. Sql语句中两个比较迷糊的概念:“连接查询” 与 “外键约束”
  4. python爬虫bs4_Python爬虫系列-Xpath自如和bs4链家
  5. python做些什么项目内容_现在比较流行的python做什么项目最适合?
  6. PG基于repmgr实现自动和手动故障切换
  7. pip安装requirement.txt
  8. qpython3第三方库_Python第三方库的安装 --Python3
  9. 二维ising模型概率c语言_盘点近几年在二维材料中发现的铁磁性
  10. 统计各部门的薪水总和_近年来,统计学热过金融火过计算机,这是真的吗?