一.

之前讲述了抽象类,里面既可以定义抽象方法,也可以定义非抽象方法。

现在我们要讲的是一种特殊情况。下面是举的例子,内容就是两个抽象方法,可以说由于类中有了抽象方法,所以类就成了抽象类?

上面这个类,我们可以用另外一种方式定义,也就是说当一个抽象类中的方法全都抽象的时候,(这是为了引出接口的由来)

(当四条边都相等时,就不叫长方形,而是叫正方形。)

这仅仅是为了引出接口,它在表现上确实是这样,但实际上它俩有很严重的不同。

二.

接口该如何定义。

(至少接口在定义的时候,比抽象类书写要简便一些,interface Demo和abstract class Demo的区别)

这就叫做定义接口,和定义类是一样的。到这可以明确一点的是,接口中的方法都是抽象的。(接口的定义形式)

虽然它不是class关键字定义的类,但是编译完还是class类文件。因为java都是以class文件来封装的字节码数据的。

interface仅仅是换了一种表现形式。

接口的描述基本介绍完了,里面除了抽象方法以外,里面还能定义一种东西,就是全局常量。

其实除了上面两个之外,还有其他的东西,但是不常见。

凭什么说是全局常量,就是由于修饰符决定的,public static final。

抽象方法的修饰符也是固定的,public abstract。

因此,定义接口的时候,可以这么定义,

接口得这么定义内容,必须的。

看上面的截图,可以得出下面的结论。(权限都是最大的)

接口中修饰符非常多,非常麻烦,一不小心,比如说漏写了一个修饰符。

DOS编译没有问题。

再漏写一个static,编译也没问题。

注意:要是忘写了,系统会帮你加上。这些成员都是固定修饰符,什么是固定?只要前面写的是interface,它里面就全都是固定的,即使向下面那样的int NUM=4,也会将前面的加上。

由于固有形式的规定,最终接口可以写成下面的形式。虽然这么写可以,是简化了,但是阅读性很差。

带来两个问题,对于这里的NUM,如果前面不加修饰的话,很可能就以为它就是个变量,(实际是个常量),你不知道它居然可以通过接口型调用,(它是static修饰,必然可以是通过类名调用)。讲完属性,讲行为。大家都知道show1();是抽象方法,没写关键字怎么看出来的,尾部是();  这样的,就是抽象的。那么抽象方法可以被覆盖,这种情况很有可能覆盖错(show1();)。原因是,它的权限是public,而且不写的话,如果你用非public覆盖,会导致失败,覆盖一定要权限足够大。所以大家都要记得,修饰符都要带着。

---恢复内容结束---

一.

之前讲述了抽象类,里面既可以定义抽象方法,也可以定义非抽象方法。

现在我们要讲的是一种特殊情况。下面是举的例子,内容就是两个抽象方法,可以说由于类中有了抽象方法,所以类就成了抽象类?

上面这个类,我们可以用另外一种方式定义,也就是说当一个抽象类中的方法全都抽象的时候,(这是为了引出接口的由来)

(当四条边都相等时,就不叫长方形,而是叫正方形。)

这仅仅是为了引出接口,它在表现上确实是这样,但实际上它俩有很严重的不同。

二.

接口该如何定义。

这就叫做定义接口,和定义类是一样的。到这可以明确一点的是,接口中的方法都是抽象的。(接口的定义形式)

虽然它不是class关键字定义的类,但是编译完还是class类文件。因为java都是以class文件来封装的字节码数据的。

interface仅仅是换了一种表现形式。

接口的描述基本介绍完了,里面除了抽象方法以外,里面还能定义一种东西,就是全局常量。

其实除了上面两个之外,还有其他的东西,但是不常见。

凭什么说是全局常量,就是由于修饰符决定的,public static final。

抽象方法的修饰符也是固定的,public abstract。

因此,定义接口的时候,可以这么定义,

接口得这么定义内容,必须的。

看上面的截图,可以得出下面的结论。(权限都是最大的)

接口中修饰符非常多,非常麻烦,一不小心,比如说漏写了一个修饰符。

DOS编译没有问题。

再漏写一个static,编译也没问题。

注意:要是忘写了,系统会帮你加上。这些成员都是固定修饰符,什么是固定?只要前面写的是interface,它里面就全都是固定的,即使向下面那样的int NUM=4,也会将前面的加上。

由于固有形式的规定,最终接口可以写成下面的形式。虽然这么写可以,是简化了,但是阅读性很差。

带来两个问题,对于这里的NUM,如果前面不加修饰的话,很可能就以为它就是个变量,(实际是个常量),你不知道它居然可以通过接口型调用,(它是static修饰,必然可以是通过类名调用)。讲完属性,讲行为。大家都知道show1();是抽象方法,没写关键字怎么看出来的,尾部是();  这样的,就是抽象的。那么抽象方法可以被覆盖,这种情况很有可能覆盖错(show1();)。原因是,它的权限是public,而且不写的话,如果你用非public覆盖,会导致失败,覆盖一定要权限足够大。所以大家都要记得,修饰符都要带着。

转载于:https://www.cnblogs.com/wsw-bk/p/7759763.html

JAVA-初步认识-第九章-接口-定义interface相关推荐

  1. 【JAVA SE】第九章 接口

    第九章 接口 文章目录 第九章 接口 一.概念 二.接口与类 1.相似点 2.区别 三.接口特性 四.接口的声明 五.接口的实现 六.接口的继承 七.接口的多继承 八.标记接口 一.概念 接口(Int ...

  2. Java编程思想第四版读书笔记——第九章 接口

    这章介绍了适配器设计模式和策略设计模式. 第九章  接口 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 1.抽象类和抽象方法 public abstract void f(); 创 ...

  3. 【Java】 第六章 接口、lambda 表达式与内部类 Java核心技术卷1基础知识原书第10版 读书笔记

    第六章 接口.lambda表达式与内部类 6. 接口.lambda 表达式与内部类 6.1 接口 6.1.1 接口概念 6.1.2 接口的特性 6.1.3 接口与抽象类 6.1.4 静态方法 6.1. ...

  4. Java核心技术卷一 -第九章:集合

    系列文章目录 Java核心技术卷一 -第一章:java"白皮书"的关键术语 Java核心技术卷一 -第三章:数据类型 Java核心技术卷一 -第三章:变量与常量 Java核心技术卷 ...

  5. 张小飞的Java之路——第九章

    写在前面: 视频是什么东西,有看文档精彩吗? 视频是什么东西,有看文档速度快吗? 视频是什么东西,有看文档效率高吗? 诸小亮:"封装说完后,我们接着看面向对象的第二大特征--继承" ...

  6. 尚学堂java 参考答案 第九章

    一.选择题 1.AC 解析:A.注意题目是Collections不是 Collection,前者是一个until下的类,后者才是接口 C.Set中的数据是无序且不能重复的 2.A 解析:将发生数组越界 ...

  7. Java中的抽象类和接口(interface),abstract关键字的用法

    目录 抽象类 接口 抽象类 Java是一个面向对象的语言,因此类可以说是根基一般的存在,所有的方法/变量/语句都必须依附一个类才能存在,有时我们为了对一个类进行拓展,会选择继承这个类,在子类中对父类进 ...

  8. JAVA中为什么要用接口定义编程_【Java公开课|为什么要用Java接口,这些内容你一定要搞清楚】- 环球网校...

    [摘要]作为一门面向对象编程语言,Java吸收了C++语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的 ...

  9. 【疯狂Java讲义】第九章 泛型

  10. Java编程思想读书笔记——第九章:接口

    第九章 接口 接口和实现类 抽象类是介于普通的类和接口之间的中庸之道,抽象类也是一种重要的工具,你不可能总是使用纯接口 9.1 抽象类和抽象方法 抽象方法声明的语法: abstract void f( ...

最新文章

  1. 计算机教室要配备空调吗,孩子们教室里的空调 到底要不要装?能不能装?
  2. 在虚拟机安装OpenSuse Tumbleweed
  3. Oracle数据库的轻松干净卸载
  4. [译]Chipmunk 教程2 - 基本概念
  5. 颠沛流离的Arcsight,辉煌不再
  6. 使用Bootstrap开发网站首页
  7. POSTMAN list参数传值
  8. 经常使用的文件工具类
  9. MachineLearning经典图
  10. gis可达性分析步骤_干货来了!ArcGIS空间分析—空间聚类模式分析
  11. Unity Shader数学基础——矩阵
  12. 支付宝小程序 scheme跳转
  13. JQuery插件Select2详解
  14. Python3 字符串小练习
  15. 保利威视教程:什么是HLS?
  16. 前端程序员未来如何发展?
  17. Excel技巧【标记多行数据连续一样的行】【第一个单元格公式适用于所有本列所有行】【按照逗号分列】【快速统计出各个项出现的次数】【冻结窗口】[表格分段选择数据][根据单元格内容引索其他单元格数据指针]
  18. 我的第一篇博文——简单的C/S模型
  19. window通过bat脚本执行exe程序
  20. java第三讲:数组(Array)

热门文章

  1. 送书《数据库系统概念》,送课,SQL必备!!
  2. mariadb修改默认字符集
  3. Node.js框架之Egg.js
  4. c#+asp.net如何删除指定路径下的文件和文件夹
  5. C# 字段、属性、成员变量
  6. 事务复制中的msrepl_ccs
  7. 两年以后重读了一篇文章,写了点东西。
  8. Linux x86_64内核中断初始化
  9. 在玩图像分类和图像分割?来挑战基于 TensorFlow 的图像注解生成!
  10. 查看现有Exchange 2010数据库大小