Java --- 接口

(一)定义

官方说法:接口(英文:Interface),在JAVA编程语言中是一个抽象类型( 接口并不是类,而是另外一种引用数据类型),是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

   注意:

  •  接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。

  •  除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

  • 接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

Java --- 接口_第1张图片

(二) 接口的语法形式

 接口的语法形式:

【修饰符】 interface 接口名{
    //接口的成员列表:
    // 公共的静态常量
    // 公共的抽象方法
    // 公共的默认方法(JDK1.8以上)
    // 公共的静态方法(JDK1.8以上)
    // 私有方法(JDK1.9以上)
}

 解释一下:

       接口定义的是多个类共同的公共行为规范(规则,这些行为规范是与外部交流的通道,这就意味着接口里通常是定义一组公共方法。

在JDK8之前,接口中只允许出现:

(1)公共的静态的常量:其中public static final可以省略

(2)公共的抽象的方法:其中public abstract可以省略

  理解:接口是从多个相似类中抽象出来的规范,不需要提供具体实现

在JDK1.8时,接口中允许声明默认方法和静态方法:

(3)公共的默认的方法:其中public 可以省略,建议保留,但是default不能省略

(4)公共的静态的方法:其中public 可以省略,建议保留,但是static不能省略

在JDK1.9时,接口又增加了:

(5)私有方法

除此之外,接口中不能有其他成员,没有构造器,没有初始化块,因为接口中没有成员变量需要动态初始化。

具体代码:

​
public abstract class Animal {
    int age;
    String name;

    public int getAge() {
        return age;
    }

    public String getName() {
        return name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }
//父类有的,子类都要有;有些子类有的方法相似,但不一定全部子类都有---接口 
    public abstract void speak();

}
//有些动物会游泳,有些不会游泳--->接口,会游的就实现一下
public interface Swim {
   // int a; Variable 'a' might not have been initialized
    // 公共的静态常量,其中public static final可以省略
    float MAX_SPEED = 30.4f ;// h 雨伞旗鱼游泳最快速度109.44公里/小时
    //公共的抽象方法
  //  public void P(){ }Interface abstract methods cannot have body
   // protected void P();Modifier 'protected' not allowed here
    //void swim()== public abstract  void swim() ,两者完全等价
    void swim();
    /*公共的默认方法  我的1.7版JDK不支持,高版本的JDK支持
        default void start(){
        System.out.println("开始");
    }

     */

    /*
    //公共的静态方法   我的1.7版JDK不支持,高版本的JDK支持
 static void show(){
        System.out.println("USB 3.0可以同步全
     */
}

public interface LLL {
    void lll();
}

//无接口---兔子
public class Rabbit extends Animal{
    @Override
    public void speak() {
        System.out.println("hengheng");
    }
}
//一个接口---狗
public class Dog extends Animal implements  Swim {
    @Override
    public void speak() {
        System.out.println("汪汪汪");
    }

    @Override
    public void swim() {
        System.out.println("狗刨");
    }
}
//多接口---用','实现
// 同时实现多个接口。
public class Frog extends Animal implements Swim,LLL{
    @Override
    public void speak() {
        System.out.println("哇哇哇");
    }

    @Override
    public void lll() {
        System.out.println("LLL");
    }

    @Override
    public void swim() {
        System.out.println("蛙泳");
    }
}


​

(三) 接口的特点总结

  • 接口本身不能创建对象,只能创建接口的实现类对象,接口类型的变量可以与实现类对象构成多态引用。

  • 声明接口用interface,接口的成员声明有限制:(1)公共的静态常量(2)公共的抽象方法(3)公共的默认方法(4)公共的静态方法(5)私有方法(JDK1.9以上)

  • 类可以实现接口,关键字是implements,而且支持多实现。如果实现类不是抽象类,就必须实现接口中所有的抽象方法。如果实现类既要继承父类又要实现父接口,那么继承(extends)在前,实现(implements)在后。

  • 接口可以继承接口,关键字是extends,而且支持多继承。

  • 接口的默认方法可以选择重写或不重写。如果有冲突问题,另行处理。子类重写父接口的默认方法,要去掉default,子接口重写父接口的默认方法,不要去掉default。

  • 接口的静态方法不能被继承,也不能被重写。接口的静态方法只能通过“接口名.静态方法名”进行调用。

(四)接口的使用 

(五)思维脑图

Java --- 接口_第2张图片

 

你可能感兴趣的:(JAVA,java,servlet,开发语言)