接口(二)

语法格式:

public interface 接口名 {
    接口成员
}
  • 和抽象类不同,定义接口使用interface修饰符,访问修饰符只能是public
  • 接口成员可以是全局常量和公共的抽象方法

子类通过implements关键字实现接口,语法如下:

public 类名 implements接口名 {
          实现方法
          普通方法
}

改正我的错误印象示例

public interface UsbInterface {
    void service();
}

public class UsbFan implements UsbInterface{
    public void service() {
        System.out.println("1");
    }
}

public class UDisk implements UsbInterface {
    public void service() {
        System.out.println(2);
    }
}

public class Test {
    public static void main(String[] args) {    
        UsbInterface usb;
        usb = new UDisk();
        usb.service();      
        usb = new UsbFan();
        usb.service();  
    }
}

在这个例子中,UsbFan和UDisk都继承了UsbInterface接口。在main方法中,是把UsbInterface当成了一个抽象类来用,采用多态,使用下面的语法格式:UsbInterface usb = new UDisk();这个地方的接口用法跟抽象类似的。

接口使用注意

1、接口之间通过extends实现继承关系,一个接口可以继承多个接口,但是不能继承类。继承接口的格式如下

[修饰符]  interface 接口名 extends 父接口1,,父接口2...{
      常量定义
      方法定义
}

2、一个普通类只能继承一个父类,但能同时实现多个接口。一个类必须实现接口的全部方法,否则必须定义为抽象类。若一个类在继承父类的同时又实现了多个接口,extends必须位于implements之前。

class 类名 extends 父类名 implements 接口1,接口2....{
      类的成员
}

3、接口和类、抽象类是一个层次的概念,命名规则相同
4、接口中可以定义常量,不能定义变量。接口中的属性都默认用“public static final”修饰,即接口中的属性都是全局静态常量。接口中的常量必须在定义时指定初始值。

//在接口中,下面这两个定义语句的效果完全相同
public static final int PI = 3.14;
int PI = 3.14;

5、接口中的所有方法都是抽象方法,接口中的方法都默认为public abstract
6、和抽象类一样,接口同样不能实例化,接口中不能有构造方法
7、但是接口和抽象类一样,也可以作为数据类型使用。
8、接口的实现类必须实现接口的所有方法

面向接口编程

程序设计时:关心实现类有何能力,而不关心实现细节
面向接口的约定而不考虑接口的具体实现

你可能感兴趣的:(接口(二))