049_面向对象_22_接口详解

一、接口的概念

  接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。接口中只有方法的定义,没有方法的实现

二、定义接口格式
  [访问修饰符] interface 接口名 [extends 父接口1,父接口2…] {

    常量定义
    方法定义
  }

  访问修饰符:只能是public或默认。

  接口名:和类名采用相同命名机制

  extends:接口可以多继承且多个接口之间用,分隔

  接口中的属性只能是常量,总是:public static final 修饰。不写也是。

  方法:接口中的方法只能是:public abstract。 省略的话,也是public abstract.

三、类、抽象类、接口

  1、类:只有具体实现。

  2、抽象类:具体的规范(抽象的方法)和实现都有。

  3、接口:只有规范。

四、接口和抽象类
  1、接口就是比“抽象类”还“抽象”的“抽象类”,可以更加规范的对子类进行约束。全面地专业地实现了:规范和具体实现的分离。
  2、抽象类还提供某些具体实现,接口不提供任何实现,接口中所有方法都是抽象方法。接口是完全面向规范的,规定了一批类具有的公共方法规范。
  3、从接口的实现者角度看,接口定义了可以向外部提供的服务。
  4、从接口的调用者角度看,接口定义了实现者能提供那些服务。
  5、接口是两个模块之间通信的标准,通信的规范。如果能把你要设计的系统之间模块之间的接口定义好,就相当于完成了系统的设计大纲,剩下的就是添砖加瓦的具体实现了。大家在工作以后,做系统时往往就是使用“面向接口”的思想来设计系统。

五、演示示例  

package edu.aeon.test;
/**
 * [说明]:接口的定义
 * @author aeon
 *
 */
public interface MyInteface {
    // 接口中只有常量和抽象方法
    /* public static final */ 
    String MAX_GREAD = "BOSS";
    int MAX_SPEED = 120;

    /*public abstract */ void test01();

    public int test02(int a, int b);
}

测试结果截图:

  

package edu.aeon.test;

/**
 * [说明]:测试接口的多继承
 * 
 * @author aeon
 * 测试结果:一个接口A继承了多个接口(B,C,D..),那么如果有个类去实现这个接口A、则要实现接口(A,B,C,D...)里面的所有方法
 * 现实中比如接口A是你的老板、接口B是你的老板娘、接口C是你的上级某领导、那么ABC所规定的你必须都要去执行。
 */
public interface InterfaceA {
    void aaa();
}

interface InterfaceB {
    void bbb();
}

interface InterfaceC extends InterfaceA, InterfaceB {
    void ccc();
}

class TestClass implements InterfaceC {

    @Override
    public void aaa() {
        System.out.println("TestClass.aaa()");
    }

    @Override
    public void bbb() {
        System.out.println("TestClass.bbb()");
    }

    @Override
    public void ccc() {
        System.out.println("TestClass.ccc()");
    }
}

六、总结

1.子类通过implements来实现接口中的规范
2.接口不能创建实例,但是可用于声明引用变量类型。
3.一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
4.接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。
5.常量必然是:public static final。我们不加这些修饰符,也是这样。
6.方法必然是:public abstrac。我们不加这些修饰符,也是这样。
7.接口完全支持多继承。和类的继承类似,子接口扩展某个父接口,将会获得父接口中所定义的一切。

 

猜你喜欢

转载自www.cnblogs.com/aeon/p/9977432.html
今日推荐