接口
接口的定义: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(); }