zoukankan      html  css  js  c++  java
  • interface接口

    当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口 interface。

    定义接口使用的关键字不是class,是interface.

    接口中常见的成员:

    这些成员都有固定的修饰符。(*由于修饰符是固定的,为了代码简洁,定义接口的时候不用写修饰符*)

    1,全局常量::public static final

    2,抽象方法:public abstract

    由此得出结论,接口中的成员都是公共的权限。

    例1:

     1 interface Demo
     2 {
     3     public static final int NUM = 4;
     4 
     5     public abstract void show1();
     6     public abstract void show2();
     7 }
     8 //类与类之间是继承关系,类与接口之间是实现关系。 
     9 /*
    10 接口不可以实例化。
    11 
    12 只能由实现了接口的子类并覆盖了接口中*所有的抽象方法后*,该子类才可以实例化。
    13 否则,这个子类就是一个抽象类。
    14 
    15 */
    16 
    17 
    18 class DemoImpl implements /*实现*/Demo
    19 {
    20     public void show1()
    21     {}
    22 
    23     public void show2()
    24     {
    25     
    26     }
    27 }
    30 /*
    31 在java中不直接支持多继承,因为会出现调用的不确定性。***原因:继承的类方法中有方法体,而接口的方法中没有方法体。***
    32 所以java将多继承机制进行改良,在java中变成了多实现。
    33 
    34 一个类可以实现多个接口。 
    35 
    36 */
    37 
    38 interface A
    39 {
    40     public void show();
    41 }
    42 
    43 interface Z
    44 {
    45     public int add(int a,int b); //不用考虑怎么实现,由子类来完成。
    46 }
    47 
    
    51 class Test implements A,Z//多实现
    52 {
    53     
    54     public int add(int a,int b)
    55     {
    56         return a+b;    
    57     }
    58         public void show(){}
    59     
    60 }
     1 /*
     2 一个类在继承另一个类的同时,还可以实现多个接口。
     3 */
     4 class Q
     5 {
     6     public void method()
     7     {}
     8 }
     9 
    10 abstract class Test2 extends Q implements A,Z   //Test2属于Q的体系,同时扩展了A,Z的功能。
    11 {
    12 
    13 }
    14 /*
    15 接口的出现避免了单继承的局限性。
    16 
    17 */

    例2:用的不多

     1 interface CC
     2 {
     3     void show();
     4 }
     5 interface MM
     6 {
     7     void method();
     8 }
     9 
    10 interface QQ extends  CC,MM//接口与接口之间是继承关系,而且接口可以多继承。【不存在方法体】
    11 {
    12     void function();
    13 }
    14 
    15 class WW implements QQ
    16 {
    17 //覆盖3个方法。
    18     public void show(){}
    19     public void method(){}
    20     public void function(){}
    21 }

     例3,一个小例子体现接口思想

    笔记本电脑使用。
    为了扩展笔记本的功能,但日后出现什么功能设备不知道。

    定义一个规则,只要日后出现的设备都符合这个规则就可以了。
    规则在java中就是接口。

     1 interface USB// 1.暴露的规则。
     2 {
     3     public void open();
     4     public void close();
     5 }
     6 
     7 
     8 class BookPC
     9 {
    10     public static void main(String[] args)
    11     {
    12         useUSB(new UPan());//2.功能扩展了。
    13         useUSB(new UsbMouse());
    14     }
    15 
    16     //使用规则。
    17     public static void useUSB(USB u)//接口类型的引用,用于接收(指向)接口的子类对象。//USB u= new UPan();
    18     {
    19         if(u!=null)
    20         {
    21             u.open();
    22             u.close();
    23         }
    24     }
    25 }
    26 //一年后。------------------------------
    27 //实现规则。
    28 
    29 //3.这些设备和电脑的耦合性降低了。
    30 
    31 class UPan implements USB
    32 {
    33     public void open()
    34     {
    35         System.out.println("upan open");
    36     }
    37     public void close()
    38     {
    39         System.out.println("upan close");
    40     }
    41 
    42 }
    43 
    44 
    45 class UsbMouse implements USB
    46 {
    47     public void open()
    48     {
    49         System.out.println("UsbMouse open");
    50     }
    51     public void close()
    52     {
    53         System.out.println("UsbMouse close");
    54     }
    55 
    56 }
  • 相关阅读:
    确保EF上下文线程内唯一
    linq的join
    编码:隐匿在计算机软硬件背后的语言
    EF删除数据
    插入数据返回主键值用 output inserted.UId
    Fancybox丰富的弹出层效果
    回车登录
    “:Choose a destination with a supported architecture in order to run on this device.”
    How to Enable Multi-Touch
    How does CCFileUTils::fullPathForFilename work
  • 原文地址:https://www.cnblogs.com/kkkky/p/6388975.html
Copyright © 2011-2022 走看看