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

    接口的语法(一)

    1.使用interface定义;

    2.可以理解为一个比较纯粹的抽象类,因为接口中的方法都是抽象方法(无需用abstract,默认就是抽象方法);

    3.接口中所有方法的权限都是public。

    USB.java

    interface USB
    {
        public void read();//抽象方法的定义,没有函数体;写不写public无所谓,默认public
        void write();      
    }

    USBPhone.java

    接口的实现类负责来实现接口的抽象方法。实现是一种特殊的继承。实现也可以得到接口里的成员变量成员方法。

    class Phone implements USB
    {
        public void read()
        {
            System.out.println("Phone read");
        }
        public void write()
        {
            System.out.println("Phone write"):
        }
    }

    Test.java

    实现是特殊的继承,所以USBPhone是子类,USB是父类,向上转型依然成立。

    class Test
    {
        public static void main(String args[])
        {
            Phone phone = new Phone();
            USB usb = phone ;//向上转型
            usb.read();//此时调用的是子类usbphone覆写过的read方法,具体见 对象的转型
            usb.write();
        }
    }

    编译运行Test后,打印出的是:

    Phone read 

    Phone write

    这是接口最基本的语法。

    接口的语法(二)

    1.实现接口使用implements关键字;

    2.一个类可以实现多个接口(实现是特殊的继承,也就是一个类可以继承多个接口,JAVA中类只支持单继承,也就是一个类只能有一个父类);

    3.一个接口可以继承多个接口。

    对于2:

    新建接口Wifi.java

    interface Wifi
    {
        public void open();
        public void close();
    }

    这时候把之前的Phone类修改一下,既支持USB又支持Wifi:

    class Phone implements USB,Wifi
    {
        public void read()
        {
            System.out.println("Phone read");
        }
        public void write()
        {
            System.out.println("Phone write"):
        }
    
    //同样,要覆写Wifi中的open和close方法
      public void open()
        {
            System.out.println(open);
        }
        public void close()
        {
            Syetem.out.println(close);
        }
    }

    这个时候Test.java中向上转型可以有两种选择:

    class Test
    {
        public static void main(String args[])
        {
            Phone phone = new Phone();
            USB usb = phone ;//向上转型
            usb.read();//此时调用的是子类usbphone覆写过的read方法,具体见 对象的转型
            usb.write();
            
            Wifi wifi = phone;//此时既可以向上转型为USB,又可以向上转型为Wifi
            wifi.open();
            wifi.close();
        }
    }

    这时的Test打印:

    Phone read 

    Phone write

    open

    close

    对于3.一个接口可以继承多个接口:

    新建A.java B.java C.java

    A.java中:

    interface A
    {
        public void funA();
    }

    B.java中:

    interface B
    {
        public void funB();
    }

    C.java中:

    interface C extends A,B//注意这里是extends而不是implments,要“实现”A和B就必须去覆写A和B中的抽象方法,这样一来C就不可能是接口,因为接口里都是抽象方法(不能有函数体)
    {
        public void fucC();
    }

    此时C里有三个方法。当要用一个类来实现C,必须覆写三个方法。这就是一个接口可以继承多个接口的含义。

    (end)

    注:这篇随笔是在看Mars老师的Java4Android的视频的时候做的笔记,如果存在版权那么归于Mars老师。其他一些笔记的内容也有部分是出自Mars老师的视频,就不一一声明了。在这里谢谢Mars老师。

  • 相关阅读:
    node.js 建立live-server
    Django 反向解析
    Boost智能指针——weak_ptr
    boost::intrusive_ptr原理介绍
    shared_ptr 的使用及注意事项
    小感
    JQ对页面中某个DIV的大小变化进行监听
    使用java Apache poi 根据word模板生成word报表
    字节byte自适应转换为B、KB、MB、GB、TB
    jq实现 元素显示后 点击页面的任何位置除元素本身外 隐藏元素
  • 原文地址:https://www.cnblogs.com/larrylawrence/p/3397526.html
Copyright © 2011-2022 走看看