1. 1 package face_09;
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6 abstract class AbsDemo{
  7. 7 abstract void show1();
  8. 8 abstract void show2();
  9. 9 }
  10. 10 /*
  11. 11 * 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用
  12. 12 * 另一种形式定义和表示,就是接口 interface。
  13. 13 */
  14. 14 //定义接口使用的关键字不是class,是interface
  15. 15
  16. 16 /*
  17. 17 * 对于接口当中常见的成员,而且这些成员都有固定的修饰符。
  18. 18 * 1,全局常量。 public static final
  19. 19 * 2,抽象方法。 public abstract
  20. 20 * 由此得出结论,接口中的成员都是公共的权限。
  21. 21 */
  22. 22
  23. 23 interface Demo{//虽然不是class类但编译完还是class文件
  24. 24 public static final int NUM = 4;//即使没写public staitic finale 和public abstract 系统会自动加上
  25. 25 public abstract void show1();
  26. 26 public abstract void show2();//如果没写public abstract,你用非public方法覆盖可能会出错,权限冲突
  27. 27 }
  28. 28 //类与类之间是继承关系,类与接口直接是实现关系。
  29. 29 /*
  30. 30 * 接口不可以实例化。
  31. 31 *
  32. 32 * 只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。
  33. 33 * 否则,这个子类就是一个抽象类。
  34. 34 */
  35. 35 class DemoImpl implements /*实现*/Demo {
  36. 36 public void show1() {
  37. 37
  38. 38 }
  39. 39 public void show2() {
  40. 40
  41. 41 }
  42. 42 }
  43. 43 /*
  44. 44 * 在java中不直接支持多继承,因为会出现调用的不确定性。
  45. 45 * 所以java将多继承机制进行改良,在java中变成了多实现。
  46. 46 *
  47. 47 * 一个类可以实现多个接口。
  48. 48 */
  49. 49 interface A {
  50. 50 public abstract void show();
  51. 51 }
  52. 52 interface Z{
  53. 53 public abstract void show(int a);//即使有返回值也可以实现,这只是个功能,但是实现的两个方法不能重名
  54. 54 }
  55. 55 class Test implements A,Z{//多实现
  56. 56 public void show() {
  57. 57
  58. 58 }
  59. 59 public void show(int a) {
  60. 60
  61. 61 }
  62. 62 }
  63. 63
  64. 64 /*
  65. 65 * 一个类在继承另一个类的同时,还可以实现多个接口。
  66. 66 */
  67. 67 class Q{
  68. 68 public void method() {
  69. 69
  70. 70 }
  71. 71 }
  72. 72 abstract class Test2 extends Q implements A,Z {
  73. 73
  74. 74 }
  75. 75 /*
  76. 76 * 接口的出现避免了单继承的局限性。
  77. 77 *
  78. 78 */
  79. 79 interface CC{
  80. 80 void show();
  81. 81 }
  82. 82 interface MM{
  83. 83 void method();
  84. 84 }
  85. 85 interface QQ extends CC,MM{//接口与接口之间是继承关系,而且接口可以多继承
  86. 86 void fuction();
  87. 87 }
  88. 88 class WW implements QQ{
  89. 89 //覆盖三个方法。
  90. 90 public void show() {};
  91. 91 public void method() {};
  92. 92 public void function() {};
  93. 93 }
  94. 94 public class InterfaceDemo {
  95. 95 public static void main(String[] args) {
  96. 96 Test test = new Test();
  97. 97 test.show();//防止多继承带来的隐患 因为没有了方法体
  98. 98 DemoImpl d = new DemoImpl();
  99. 99 System.out.println(d.NUM);
  100. 100 System.out.println(DemoImpl.NUM);
  101. 101 System.out.println(Demo.NUM);
  102. 102 }
  103. 103 }
  104. 104 /*
  105. 105 * 接口的特点:
  106. 106 * 1,接口是对外暴露的规则。
  107. 107 * 2,接口是程序的功能扩展。
  108. 108 * 3,接口的出现降低耦合性。
  109. 109 * 4,接口可以用来多实现。
  110. 110 * 5,类与接口是实现关系,而且类可以继承一个类的同时实现多个接口。
  111. 111 * 6,接口与接口之间可以有继承关系。
  112. 112 */

java接口概述及特点的更多相关文章

  1. Java集合----概述、Collection接口、Iterator接口

    Java 集合概述 Java 集合就像一种容器,可以把多个对象的引用放入容器中. Java 集合类可以用于存储数量不等的多个对象,还可用于保存具有映射关系的关联数组 Java 集合可分为 Set.Li ...

  2. Java Annotation概述

    @(Java)[Annotation|Java] Java Annotation概述 用途 编译器的相关信息,如用于检测错误和一些警告 编译时和部署时的处理,如一些软件用于自动生成代码之类的 运行时处 ...

  3. 《java集合概述》

    JAVA集合概述: Collection: |---List有序的:通过索引就可以精确的操作集合中的元素.元素是可以重复的. List提供了增删改查的动作. 增加add(element) add(in ...

  4. Java 接口和抽象类差别

    原文:http://blog.csdn.net/sunboard/article/details/3831823 1.概述 一个软件设计的好坏,我想非常大程度上取决于它的总体架构,而这个总体架构事实上 ...

  5. Java集合概述、Set集合(HashSet类、LinkedHashSet类、TreeSet类、EnumSet类)

    Java集合概述.Set集合(HashSet类.LinkedHashSet类.TreeSet类.EnumSet类) 1.Java集合概述1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指 ...

  6. Java笔记:Java集合概述和Set集合

    本文主要是Java集合的概述和Set集合 1.Java集合概述 1)数组可以保存多个对象,但数组长度不可变,一旦在初始化数组时指定了数组长度,这个数组长度就是不可变的,如果需要保存数量变化的数据,数组 ...

  7. Java NIO学习笔记一 Java NIO概述

    Java NIO概述 Java NIO(新的IO)是Java的替代IO API(来自Java 1.4),这意味着替代标准的 java IO和java Networking API.Java NIO提供 ...

  8. java基础---java语言概述

    一.计算机编程的两种范型 1.面向过程的模型---具有线性执行特点,认为是代码作用于数据. 2.面向对象的模型---围绕它的数据(即对象)和为这个数据定义的接口来组织程序:实际上是用数据控制代码的访问 ...

  9. Java核心技术(Java白皮书)卷Ⅰ 第一章 Java程序设计概述

    第1章 Java程序设计概述1.1 Java程序设计平台 具有令人赏心悦目的语法和易于理解的语言,与其他许多优秀语言一样,Java满足这些要求. 可移植性 垃圾收集 提供大型的库  如果想要有奇特的绘 ...

随机推荐

  1. JAVA根据URL生成二维码图片、根据路径生成二维码图片

    引入jar包 zxing-2.3.0.jar.IKAnalyzer2012_u6.jar 下载地址:https://yvioo.lanzous.com/b00nlbp6h                ...

  2. 再谈多线程模型之生产者消费者(单一生产者和单一消费者)(c++11实现)

    0.关于 为缩短篇幅,本系列记录如下: 再谈多线程模型之生产者消费者(基础概念)(c++11实现) 再谈多线程模型之生产者消费者(单一生产者和单一消费者)(c++11实现)[本文] 再谈多线程模型之生 ...

  3. 一个c++11自定义的信号量

    1.关于 This is from here But I did some changes. 2. semaphore.h /** @ brief : this is from https://sta ...

  4. 【LeetCode】83. Remove Duplicates from Sorted List 解题报告(C++&Java&Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 判断相邻节点是否相等 使用set 使用列表 递归 日 ...

  5. 【LeetCode】858. Mirror Reflection 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  6. 【LeetCode】227. Basic Calculator II 解题报告(Python)

    [LeetCode]227. Basic Calculator II 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: h ...

  7. 【LeetCode】148. Sort List 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...

  8. .NET Core 实现动态代理做AOP(面向切面编程)

    1.介绍 1.1 动态代理作用 用动态代理可以做AOP(面向切面编程),进行无入侵式实现自己的扩展业务,调用者和被调用者之间的解耦,提高代码的灵活性和可扩展性,比如:日志记录.性能统计.安全控制.事务 ...

  9. 源码解析C#中PriorityQueue(优先级队列)的实现

    前言 前段时间看到有大佬对.net 6.0新出的PriorityQueue(优先级队列)数据结构做了解析,但是没有源码分析,所以本着探究源码的心态,看了看并分享出来.它不像普通队列先进先出(FIFO) ...

  10. 浅议像素化与体素化Part.1——平面图形像素化

    什么是像素化 学计算机的人往往都比较清楚图形和图像的区别,而且往往能够从数据结构的角度理解这两者的区别,一般来说,图形是由几何空间中的基本图元所组成,表现为用外部轮廓线条勾勒成的矢量图.例如由计算机绘 ...