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

    pom文件 添加插件 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>myb ...

  2. nim_duilib(14)之xml配置半透明窗体控件不透明

    before starting note 截至目前,我只能用xml写一些简单的布局和设置控件属性,循序渐进吧. 正在学习nim_duilib的xml的一些属性. xml配置半透明 GTAV中就有很多控 ...

  3. windows串口之虚拟串口和Access port

    关于 本文将介绍自己常用的串口工具,演示环境为Windows. 1. 虚拟串口 1.1 没有那么多的物理串口, 用虚拟串口来凑.需要软件Configure Virtual Serial Port Dr ...

  4. 小小明系列故事——游戏的烦恼(hdu 4517)

    小小明系列故事--游戏的烦恼 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

  5. 使用AVPlayer自定义支持全屏的播放器(五)—Swift重构版本

    前言 很早之前开源了一个简单的视频播放器,由于年久失修,效果惨目忍睹,最近特意花时间对其进行了深度重构.旧版本后期不再维护,新版本使用Swift实现,后续会增加更多功能.不想看文字的请自行下载代码-- ...

  6. 常见分布式唯一ID生成策略

    方法一: 用数据库的 auto_increment 来生成 优点: 此方法使用数据库原有的功能,所以相对简单 能够保证唯一性 能够保证递增性 id 之间的步长是固定且可自定义的 缺点: 可用性难以保证 ...

  7. RabbitMQ学习笔记五:RabbitMQ之优先级消息队列

    RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...

  8. [AllError错误填坑大全]Jsoncpp logicError

    在将Json::Value添加元素子项的时候,不要与(key,Value)的形式共有.容易形成逻辑错误. 举例如下: Json::Value output; Json::Value people; n ...

  9. 登陆认证框架:SpringSecurity

    最近想给自己的小系统搭建一个登录认证服务,最初是想着一套oauth2权鉴就可以,但是发现这个oauth2只是权鉴,具体的登录认证需要由 SpringSecurity来进行实现. 也就是说SpringS ...

  10. vim 个性化设置

    vim 编辑器安装 yum install vim vim个性化设置 vim ~/.vimrc 复制以下代码 关闭vim一致性原则 set nocompatible 显示行号 set number 设 ...