首页 > 技术文章 > 接口

huasheng2020 2020-07-23 16:17 原文

接口的定义:interface

  一般是public  interface{

类和接口的联系:

  类实现接口:

  class Mouse implements Usb{

接口的特点和新特性:

  不能创建对象,也没有构造方法,接口不能实例化,而只能依附于其他class存在。

  (非抽象)类实现接口,必须全部重写里面的抽象方法。(接口里面的方法,全部都是抽象方法(JDK8以后可以新建static和default方法),但是抽象方法依然是主流)

  jdk 1.9之后还有了 private void show(){} 私有非静态

          private static show(){}私有静态方法

  default方法:

    使用情景:default的接口方法,用于接口的升级构造;

    设想:比如现在有100000个类,实现了Inter接口1,但是由于工作的原因,必须给接口1加一个方法,

    jdk7:由于都是抽象方法,所以100000个类都得报错,因为这么多的类都没重写这个抽象方法,

    jdk8:我们可以定义该方法为默认方法,这个默认方法是有方法体的,导致子类可以不用重写。

  static方法:

    接口的静态方法,只能是接口调用,其他实现接口的类,不能使用接口的静态方法。
    类的静态方法,无法被重写,是自己调用自己的。父类调用父类的,子类调用子类的。

  私有的static方法:

    给接口内部用的重复代码片段用。

public class Demo5 implements USB{

    @Override
    public void run() {
        // TODO Auto-generated method stub
        
    }
    public void eRun() {
        //假如不写public会报错,因为用的default权限,子类重写父类的方法,权限必须大于等于
    }
    
}
public interface USB {
    void run();
    default void eRun(){}; // 这里的default前面默认带public修饰。
}

 

举例:

package interface_demo;

public interface plug {
    public void trangle();
}
 1 package interface_demo;
 2 
 3 public class Demo1 implements plug {
 4 
 5     @Override
 6     public void trangle() {
 7         // TODO Auto-generated method stub
 8         //一定要重写这个方法,不然报错。
 9     }
10 }

接口里面的所有的成员:

成员变量:都是常量,就算你不给任何修饰符,他前面也有默认的public static final修饰,所以必须开始就给它赋值。

  成员常量:(只有一次赋值机会)   

        1,直接赋值的方法, public final int a = 10;

        2,成员常量构造赋值:

class student {
    public final int a;
    public student() {
        this.a = 10;
    }
}

 

        3,如果是多个构造方法时候,每个构造方法里面都必须给它赋值:

class student {
    public final int a;
    public student() {
        this.a = 10;
    }
    public student(String str) {
        this.a = 5;
    }
}

 

 

构造方法:接口没有构造方法;

成员方法:全部都是抽象方法;实现接口的类,必须重写抽象方法:

类和接口的关系:

  类继承类,只能单独继承和多层继承,

  类实现接口,可以多实现接口,还可以在继承类的时候实现多个接口;

  

package interface_demo;

public interface plug2 {
    void run();
}

 

/**
 * 
 */
package interface_demo;

public interface plug3 extends plug2,plug {
    void run2();
}

 

推荐阅读