题目

定义一个接口Usb,里面有工作方法work(),定义一个UsbMouse类和UsbKeyborder类,让两个Usb设备实现Usb接口。

编写测试程序,创建一个Usb类型的数组,数组元素为UsbMouse对象和UsbKeyborder对象,循环遍历数组元素,数组元素执行work函数,运行结果如下:

usb程序设计java源代码 usb接口编程_抽象类

代码 

package zuoye;
public class zuoye11_2_1 {
    public static void main(String[] args){
        Usb[] usb={new UsbMouse(),new UsbKeyborder()};
        for(Usb temp:usb){
            temp.work();
        }
    }
}
interface Usb{
    abstract void work();
}
class UsbMouse implements Usb{
    public void work(){
        System.out.println("鼠标开始工作了!你可以移动鼠标了!");
    }
}
class UsbKeyborder implements Usb{
    public void work(){
        System.out.println("键盘开始工作了!你可以敲字了!");
    }
}

输出

usb程序设计java源代码 usb接口编程_usb程序设计java源代码_02

接口类的特点

接口是引用类型的,和抽象类的相似之处有三点:

  1. 不能实例化;
  2. 包含未实现的方法声明;
  3. 派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员)。

抽象类与接口紧密相关。然而接口又比抽象类更抽象,这主要体现在它们的差别上:

  1. 类可以实现无限个接口,但仅能从一个抽象(或任何其他类型)类继承,从抽象类派生的类仍可实现接口,从而得出接口是用来解决多重继承问题的。
  2. 抽象类当中可以存在非抽象的方法,可接口不能,且它里面的方法只是一个声明必须用public来修饰没有具体实现的方法。
  3. 抽象类中的成员变量可以被不同的修饰符来修饰,可接口中的成员变量默认的都是静态常量(static final)。
  4. 抽象类是对象的抽象,然而接口是一种行为规范。

抽象类(abstract class)和接口(interface)有什么异同?

相同点:

1.抽象类和接口都不能被实例化,但可以定义抽象类和接口类型的引用。

2.一个类如果继承了抽象类和接口,必须要对其中的抽象方法全部实现。(接口中方法默认的是public abstract修饰的)否则该类仍然需要被声明为抽象类。

不同点:

1、抽象类可以有构造方法,抽象方法和具体方法。

   接口不能有构造方法,而且其中的方法全部都是抽象方法。(接口中方法默认的是public abstract修饰的)

2、抽象类中的成员可以使private、默认、protected、public的。

  接口中的成员全部都是public的。

3、抽象类可以定义成员变量。

  接口中定义的成员变量其实都是常量。(接口中的成员变量默认是public static final 修饰的 )