《从C/C++到Java入门指南》- 28.接口
接口
对比抽象类
抽象类我们知道是一个类,但是里面的方法都是空的,需要由抽象类的子类继承后来实现,可以说抽象类定义了一种类型类的规范。
接口也是一样的东西,接口也是一种抽象的载体,只定义方法名,相当于是定义了一种规范,需要被别的类来实现。
区别在于,一个类可以实现很多接口,但抽象类只能被子类实现。
接口的强大之处在于把方法从类中剥离出来,更加的模块化,更加自由。
定义接口
public interface Myinterface {
public void draw();
}
实现接口
实现一个接口方法,这个方法打印一句话。
public interface Myinterface {
public void draw();
}
class Myclass implements Myinterface {
@Override
public void draw() {
System.out.println("Drawing!");
}
}
public class Main {
public static void main(String args[]) {
Myclass my = new Myclass();
my.draw();
}
}
接口继承
接口之间也可以相互继承,使用extends
关键字。
public interface NewInterface extends Myinterface {
public void hello();
}
这样子接口的方法体实际上会多一个。
接口的多重继承
由于接口的特殊性,接口可以进行多重继承,也就是继承多个接口。
interface FatherInterface {
public void work();
}
interface MotherInterface {
public void make_up();
}
interface childInterface extends FatherInterface, MotherInterface {
public void cry();
}
public class Main {
public static void main(String args[]) {
System.out.println("Run");
}
}
接口的默认方法
interface DefaultInterface {
default void run() {
System.out.println("Run");
}
}
class A implements DefaultInterface {
@Override
public void run() {
DefaultInterface.super.run();
}
}
public class Main {
public static void main(String args[]) {
A a = new A();
a.run();
}
}
可以看到,这里定义了一个接口,在接口中有一个默认方法。类A
实现了该接口并且调用了接口的默认方法。
接口的静态方法
所谓接口静态方法就是static
方法。
interface DefaultInterface {
static void run() {
System.out.println("Run");
}
}
public class Main {
public static void main(String args[]) {
DefaultInterface.run();
}
}
顾名思义,静态方法嘛,可以使用接口来直接调用。