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. redis启动报错:Fatal error loading the DB: Invalid argument

    redis启动报错 add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be ...

  2. JAVA类初始化和实例初始化

    一.类初始化过程 1.一个类要创建实例需要先创建和加载 (1) main方法所在的类需要先加载和实例化 2.一个子类要初始化,需要先初始化父类 3.一个类初始化就是执行<clinit>方法 ...

  3. 【LeetCode】934. Shortest Bridge 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS + BFS 相似题目 参考资料 日期 题目地 ...

  4. 【LeetCode】868. Binary Gap 解题报告(Python)

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

  5. Subsequence(hdu3530)

    Subsequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  6. GCD - Extreme (II)(UVA11426)

    思路:欧拉函数: 欧拉函数,然后用下等差数列公式就行了. 1 #include<stdio.h> 2 #include<algorithm> 3 #include<ios ...

  7. [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎

    [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 目录 [源码解析] PyTorch 分布式之弹性训练(5)---Rendezvous 引擎 0x00 摘要 0x0 ...

  8. SMOOTHING (LOWPASS) SPATIAL FILTERS

    目录 FILTERS Box Filter Kernels Lowpass Gaussian Filter Kernels Order-Statistic (Nonlinear) Filters Go ...

  9. Chapter 12 IP Weighting and Marginal Structural Model

    目录 12.1 The causal question 12.2 Estimating IP weights via modeling 12.3 Stabilized IP weights 12.4 ...

  10. ADAM : A METHOD FOR STOCHASTIC OPTIMIZATION

    目录 概 主要内容 算法 选择合适的参数 一些别的优化算法 AdaMax 理论 代码 Kingma D P, Ba J. Adam: A Method for Stochastic Optimizat ...