19.接口
接口:初期理解,可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的,该类可以通过接口的形式来表示
class用于定义类,interface用于定义接口
接口定义时,格式特点:
1.接口中常见定义:常量,抽象方法
2.接口中的成员都有固定修饰符。
常量:(public statci final)
方法:(public abstract) 可以不写,写全便于查看
记住:接口中的成员都是public
接口:是不可以创建对象的,因为有抽象方法。需要被子类实现。
子类对接口中的抽象方法全都覆盖后,才可以实例化。否则子类是一个抽象类。
接口可以被类多实现,也是对多继承不支持的转换形式,Java支持多实现。
public class Interface_09 { public static void main(String[] args) { // TODO Auto-generated method stub Test t=new Test(); System.out.println(t.NUM); System.out.println(Test.NUM); System.out.println(Inter.NUM); } } interface Inter{ public static final int NUM=3; public abstract void show(); } interface InterA{ public abstract void method(); } class Demo1{ public void function(){ } } class Test extends Demo1 implements Inter,InterA{ //多实现 @Override public void show() { // TODO Auto-generated method stub } @Override public void method() { // TODO Auto-generated method stub } } //接口与接口之间是继承关系(层级继承) interface A{ void methodA(); } interface B extends A{ void methodB(); } interface C extends B{ void methodC(); } class D implements C{ @Override public void methodB() { // TODO Auto-generated method stub } @Override public void methodA() { // TODO Auto-generated method stub } @Override public void methodC() { // TODO Auto-generated method stub } }
以下情况支持多继承
interface AA{ void getA(); } interface BB{ void getB(); } interface CC extends AA,BB{ //如果BB没有继承AA,CC可以多继承 void getA(); void getB(); }
以下情况不支持多继承
不支持多继承的原因:父类中方法有重复(返回值类型出现问题时),子类调用时出现问题。
接口不出现问题,多实现没有方法体,由子类任意定义。
interface AA{ void getA(); int show(); } interface BB{ void getB(); boolean show(); } interface CC extends AA,BB{ //如果BB没有继承AA,CC可以多继承 void getA(); void getB(); }