接口
介绍
什么是接口
在Java中是一个抽象类型,是抽象方法的集合。
接口通常以interface声明。
类通过继承(implements)接口进而继承接口的抽象方法。
类要定义接口中的所有方法。(抽象类除外)
接口无法实例化,但是可以被实现。
接口特性
- 接口中的每一个方法都是隐式抽象的,接口中的方法会被隐式指定为public abstract修饰。
- 接口中的变量会被隐式指定为public static final变量。
- 接口中的方法不能在接口中实现,只能通过实现类来实现接口中的方法。
- 接口中的方法都是公有的。
接口的声明
(访问权限修饰符) (修饰符) interface 接口名称[extends 其他接口名称]{
//声明变量
//抽象方法
}
接口的使用
通过子类进行实例化,子类可以通过implements关键字实现多个接口。
如果接口的子类不是抽象类,就要覆写接口中的所有方法。
接口对象可以利用子类对象的向上转型进行实例化。
接口和它的子类:
//Java接口
public interface A {
//接口默认是public abstract修饰的
//接口中的变量默认是public static abstract修饰的
//接口中的方法也是默认public abstract修饰的
void getA();//接口中定义的方法
void print();//接口中定义的方法
void show();//接口中定义的方法
}
//接口的子类
public class AImpl implements A{
//接口的实现类不是抽象类,就要覆写接口中的所有方法,否则编译报错
@Override
public void getA() {
System.out.println("接口A的抽象方法getA()");
}
@Override
public void print() {
System.out.println("接口A的抽象方法print()");
}
@Override
public void show() {
System.out.println("接口A的抽象方法show()");
}
}
//测试类
public class MainTestInterface {
public static void main(String[] args) {
A ai = new AImpl();//通过子类实例化接口
ai.getA();//调用接口方法
ai.print();//调用接口方法
ai.show();//调用接口方法
}
}
//输出结果为:
接口A的抽象方法getA()
接口A的抽象方法print()
接口A的抽象方法show()
接口和它的抽象类:
//Java接口
public interface A {
//接口默认是public abstract修饰的
//接口中的变量默认是public static abstract修饰的
//接口中的方法也是默认public abstract修饰的
void getA();//接口中定义的方法
void print();//接口中定义的方法
void show();//接口中定义的方法
}
//接口的抽象类
public abstract class AImplAbstract implements A{
//接口的抽象实现类,可以不用覆写接口中的方法,但是子类必须要覆写接口中的方法
public void getA(){
System.out.println("接口的抽象类中的方法getA()");
}
public void print() {
System.out.println("接口的抽象类中的方法print()");
}
}
//接口抽象类的子类
public class AimplAbstractSon extends AImplAbstract{
//接口的抽象类的子类中必须要覆写抽象类中没有覆写的接口中的方法
@Override
public void show() {
System.out.println("接口的抽象类的子类中的方法");
}
}
//测试类
public class MainTestInterface {
public static void main(String[] args) {
A a = new AimplAbstractSon();//通过接口抽象类的子类实例化接口
a.getA();
a.print();
a.show();
}
}
//输出结果为:
接口的抽象类中的方法getA()
接口的抽象类中的方法print()
接口的抽象类的子类中的方法