zoukankan      html  css  js  c++  java
  • Java基础十--接口

    Java基础十--接口

    一、接口的定义和实例

      1 /*
      2 abstract class AbsDemo
      3 {
      4     abstract void show1();
      5     abstract void show2();
      6 }
      7 
      8 当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用
      9 另一种形式定义和表示,就是 接口 interface。
     10 */
     11 
     12 //定义接口使用的关键字不是class,是interface.
     13 //interface编译后还是.class文件,其实本质上还是class.
     14 
     15 /*
     16 接口和类中是实现,接口和接口之间是多继承,为什么可以多继承,因为没有方法体,能否多继承的实质看有没有方法体
     17 */
     18 
     19 /*
     20 对于接口当中常见的成员:而且这些成员都有固定的修饰符。
     21 1,全局常量: public  static final 
     22 
     23 2,抽象方法。public abstract
     24  
     25 修饰词你自己不写的话程序给你加上。所以我们都写上,那样阅读性强。
     26 
     27 由此得出结论,接口中的成员都是公共的权限.
     28 
     29 继承没有实现成员变量,方法也是抽象方法,没有函数体的方法,所以实现接口和继承类不冲突,因为接口和类里面的东西不一样
     30 */
     31 interface Demo
     32 {
     33     public static final int NUM = 4;//static和final和public你不写程序会给你默认加上
     34 
     35     public abstract void show1();//public和abstract你不写程序会给你默认加上
     36     public abstract void show2();
     37 }
     38 //类与类之间是继承关系,类与接口直接是实现关系。 
     39 /*
     40 接口不可以实例化。
     41 
     42 只能由实现了接口的子类并覆盖了接口中所有的抽象方法后,该子类才可以实例化。
     43 否则,这个子类就是一个抽象类。
     44 
     45 */
     46 
     47 
     48 class DemoImpl implements /*实现*/Demo
     49 {
     50     public void show1()
     51     {}
     52 
     53     public void show2()
     54     {
     55     
     56     }
     57 }
     58 
     59 
     60 /*
     61 在java中不直接支持多继承,因为会出现调用的不确定性。
     62 所以java将多继承机制进行改良,在java中变成了多实现。
     63 
     64 一个类可以实现多个接口。 
     65 
     66 */
     67 
     68 interface A
     69 {
     70     public void show();
     71 }
     72 
     73 interface Z
     74 {
     75     public int add(int a,int b);
     76 }
     77 
     78 
     79 
     80 
     81 class Test implements A,Z//多实现
     82 {
     83     
     84     public int add(int a,int b)
     85     {
     86         return a+b+3;    
     87     }
     88     /**/
     89     public void show(){}
     90     
     91 }
     92 
     93 
     94 
     95 
     96 
     97 /*
     98 一个类在继承另一个类的同时,还可以实现多个接口。
     99 
    100 
    101 
    102 */
    103 class Q
    104 {
    105     public void method()
    106     {}
    107 }
    108 
    109 abstract class Test2 extends Q implements A,Z
    110 {
    111 
    112 }
    113 /*
    114 接口的出现避免了单继承的局限性。
    115 
    116 */
    117 
    118 
    119 interface CC
    120 {
    121     void show();
    122 }
    123 interface MM
    124 {
    125     void method();
    126 }
    127 
    128 interface QQ extends  CC,MM//接口与接口之间是继承关系,而且接口可以多继承。 
    129 {
    130     void function();
    131 }
    132 
    133 class WW implements QQ
    134 {
    135 //覆盖3个方法。
    136     public void show(){}
    137     public void method(){}
    138     public void function(){}
    139 }
    140 
    141 
    142 class InterfaceDemo 
    143 {
    144     public static void main(String[] args) 
    145     {
    146 
    147         Test t = new Test();
    148         t.show();
    149 
    150 //        DemoImpl d = new DemoImpl();    
    151 //        System.out.println(d.NUM);
    152 //        System.out.println(DemoImpl.NUM);
    153 //        System.out.println(Demo.NUM);
    154     }
    155 }

    二、接口和抽象类的区别

     1 /*
     2 抽象类和接口的异同点:
     3 
     4 相同点:
     5     都是不断向上抽取而来的。
     6 
     7 
     8 不同点:
     9     1,抽象类需要被继承,而且只能单继承10        接口需要被实现,而且可以多实现11     2,抽象类中可以定义抽象方法和非抽象方法,子类继承后,可以直接使用非抽象方法。
    12        接口中只能定义抽象方法,必须由子类去实现。 
    13     3,抽象类的继承,是is a关系,在定义该体系的基本共性内容14        接口的实现是 like a 关系,在定义体系额外功能15 
    16 
    17 
    18 
    19 犬按功能分:有导盲犬,搜爆犬。
    20 
    21 
    22 abstract class 犬
    23 {
    24     abstract void 吼叫();
    25 }
    26 
    27 //abstract class 导盲
    28 interface 导盲
    29 {
    30     abstract void 导盲();
    31 }
    32 
    33 
    34 class 导盲犬 extends 犬 implements 导盲
    35 {
    36     public void 吼叫()
    37     {
    38     }
    39     public void 导盲(){}
    40 }
    41 
    42 
    43 
    44 //在不同的问题领域中,有不同的分析方式。
    45 学员:
    46     学习。
    47     抽烟学员
    48 
    49 
    50 
    51 
    52 烟民。
    53     
    54 
    55 
    56 
    57 
    58 
    59 
    60 
    61 */
    62 
    63 class InterfaceDemo 
    64 {
    65     public static void main(String[] args) 
    66     {
    67         System.out.println("Hello World!");
    68     }
    69 }

    三、接口实例

    usb接口实例

     1 /*
     2 笔记本电脑使用。
     3 为了扩展笔记本的功能,但日后出现什么功能设备不知道。
     4 
     5 定义一个规则,只要日后出现的设备都符合这个规则就可以了。
     6 规则在java中就是接口。
     7 
     8 */
     9 interface USB// 暴露的规则。
    10 {
    11     public void open();
    12     public void close();
    13 }
    14 
    15 
    16 class BookPC
    17 {
    18     public static void main(String[] args)
    19     {
    20         useUSB(new UPan());//功能扩展了。
    21         useUSB(new UsbMouse());
    22     }
    23 
    24     //使用规则。
    25     public static void useUSB(USB u)//接口类型的引用,用于接收(指向)接口的子类对象。//USB u= new UPan();
    26     {
    27         if(u!=null)
    28         {
    29             u.open();
    30             u.close();
    31         }
    32     }
    33 }
    34 //一年后。------------------------------
    35 //实现规则。也就是连接接口
    36 
    37 //这些设备和电脑的耦合性降低了。
    38 
    39 class UPan implements USB
    40 {
    41     public void open()
    42     {
    43         System.out.println("upan open");
    44     }
    45     public void close()
    46     {
    47         System.out.println("upan close");
    48     }
    49 
    50 }
    51 
    52 
    53 class UsbMouse implements USB
    54 {
    55     public void open()
    56     {
    57         System.out.println("UsbMouse open");
    58     }
    59     public void close()
    60     {
    61         System.out.println("UsbMouse close");
    62     }
    63 
    64 }
    65 
    66 
    67 
    68 
    69 
    70 
    71 
    72 
    73 /*
    74 class Mouse
    75 {
    76 }
    77 
    78 class BookPC
    79 {
    80     public static void main(String[] args)
    81     {
    82         useMouse(new Mouse());
    83     }
    84     public static void useMOuse(Mouse m)
    85     {
    86         m.open();
    87     }
    88     public static void useMOuse(Mouse m)
    89     {
    90         m.open();
    91     }
    92 }
    93 */

     先暴露接口,使用接口的时候再实现接口,就可以做到功能的扩展。

  • 相关阅读:
    三数之和
    罗马数字与整数
    Oracle 开启或关闭归档
    Oracle RMAN scripts to delete archivelog
    Oracle check TBS usage
    Oracle kill locked sessions
    场景9 深入RAC运行原理
    场景7 Data Guard
    场景4 Data Warehouse Management 数据仓库
    场景5 Performance Management
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/6922382.html
Copyright © 2011-2022 走看看