接口写法:
interface Runner {
int id = 1;
public void start();
public void run();
public void stop();
}
接口:
1、java不支持多重继承,但是接口可以实现。从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
2、接口中除了定义方法外,还可以定义成员变量。方法和属性默认都是public修饰,也可以使用protected,但不能用private。所有的属性都是静态的常量,默认省略了static和final修饰符,属性的值必须实例化(初始化)。
3、接口中所有的方法,都是抽象方法。
特点:
接口中的所有成员变量都默认是由public static final修饰的。
接口中的所有方法都默认是由public abstract修饰的。
接口没有构造方法。构造方法用于创建对象
实现接口的类中必须提供接口中所有方法的具体实现内容。
多个无关的类可以实现同一个接口
一个类可以实现多个无关的接口
与继承关系类似,接口与实现类之间存在多态性
接口也可以继承另一个接口,使用extends关键字。
接口还可以作为常量的集合:
interface Person {
String name="zhang";
Integer age=12;
}
如果实现接口的类中没有实现接口中的全部方法,必须将此类定义为抽象类:
interface Flyable {
public final int wingsNumber = 2;
void fly();
}
interface Bitable {
public int teethNumber = 0;
public abstract void bite();
}
abstract class Bird implements Flyable,Bitable{
@Override
public void fly() {
}
}
JDK8新增接口中抽象方法的默认实现,使用default关键字,加上default关键字后需要实现方法体,子类中可以覆盖该方法。
interface Flyable {
default void fly() {
System.out.println("fly!!");
}
}
class Bird implements Flyable{
@Override
public void fly() {
System.out.println("fly");
}
}