接口interface

我们的普通类里,只能写具体的方法实现;

抽象类里,可以书写方法的具体实现和没有具体实现的抽象方法(规范);

那有没有什么东西,只有规范呢?

1.什么是接口?

接口是静态常量和抽象方法的集合(都为公有的),接口的本质就是一种规范。

拿生活中的防盗门举例子理解一下接口的作用,门有开门关门,锁有上锁开锁,防盗门既有开门关门,又是上锁和开锁,但是Java是单继承,只能直接的继承一个类,不能一起继承门和锁,所以此时可以将锁定义成接口,去实现这个接口。

2.接口的定义

接口使用interface关键字定义。

例:

package com.dh.intrerfacedemo;

//定义一个接口
//同类的定义一样,只能使用public和default修饰符
public interface InterfaceDemo {
}

即在接口中,书写的变量为公有静态常量,书写的方法为公有抽象方法。

package com.dh.intrerfacedemo;

//定义一个接口
public interface InterfaceDemo {

    //公有的静态常量
    int AGE = 10;   //本质是public static final int AGE

    //共有的抽象方法
    void show();    //本质是public abstract void show();
    
}

注意:接口不是类,没有构造方法,也不能实例化对象。

3.接口的实现

使用implements实现接口。

实现一个接口,必须重写其所有的方法。

例:

可以实现多个接口,接口之间使用 , 隔开:

再定义一个接口:

package com.dh.intrerfacedemo;

public interface InterfaceDemo2 {

    void show2();
}

4.接口继承接口

类可以继承类,接口也可以继承接口,接口之间的继承也是使用extends关键字

并且支持多继承

再定义一个接口:

package com.dh.intrerfacedemo;

public interface InterfaceDemo3 {
    
    void show3();
}

实现一个接口,不但要实现该接口的方法,也要实现其父接口的抽象方法。

5.接口与抽象类的区别

  • 共同点:都不能实例化对象。实现接口和继承抽象类都必须实现它们中的抽象方法。
  • 不同点:
    • 接口使用interface定义,抽象类使用class定义,使用abstract修饰;
    • 接口中的方法一定为抽象方法,抽象类中可以有抽象方法和非抽象方法;
    • 接口中的变量和方法都使用public修饰,抽象类中可以任意权限修饰符;
    • 接口没有构造方法,抽象类有构造方法;
    • 实现接口使用implements,继承抽象类使用extends;
    • 接口支持多实现,并且接口与接口之间也可多继承,抽象类的继承只能单继承。

接口在日后的编程中会经常使用~

本人水平有限,若有错误,望指出~

posted @ 2021-01-21 23:15  deng-hui  阅读(120)  评论(0编辑  收藏  举报