接口

  1. Java提供了一种叫做抽象方法的机制。抽象方法只有声明没有具体实现。定义抽象方法的语法如下:
    abstract returnType methodName(arguments)。含有一个或多个抽象方法的类,称为抽象类。当试图从抽象类中生成一个对象时,编译器将会报错。含有抽象方法的类,必须声明为abstract。
  2. 接口有interface关键字,前面可以加public。假如不加pubic,表示接口是包权限。接口中可以包含成员变量,这些变量都被隐式指定为static和final(接口不允许空白final,但可以被表达式初始化)。接口中的方法隐式地指定为public。
  3. 如果要从一个非接口的类继承,那么只能从一个类去继承,而其余的基元素都必须是接口。当通过这种方式将一个具体类和多个接口组合到一起时,这个具体类必须放在前面,后面跟着的才是接口(否则编译器要报错)。
  4. 使用接口的核心原因:为了能够向上转型为多个基类型,以及由此而带来的灵活性(可以通过声明一个方法,参数为基类等方式)。第二个原因与使用抽象类相同:防止客户端程序员创建该基类的对象。
  5. 可以通过继承接口来生成新的接口。(接口可以一次性继承多个接口,这与类只能继承一个基类不同)
  6. 当组合接口时名字相同时,当方法的签名相同,参数值不同;或者当方法签名、参数名、返回值都相同时,都没问题,相当于方法重载。而当方法签名、参数值相同,返回值不同时,就会引起冲突。另外注意:组合接口时使用相同的方法名通常会导致代码可读性的混乱,请尽量避免。
  7. 由于java SE5有更加强大和灵活的enum关键字,因此用interface来群组常量已经没有意义。
  8. 接口可以嵌套在类或其他接口中。就像非嵌套接口一样,可以拥有public和“包访问”两种可视性。
    • 当接口嵌套在类中时,嵌套接口还可以被声明为private的(接口中不能嵌套private接口)。
    • 类中嵌套的private接口,只能在该类中嵌套另一个类实现该private接口,而外部类不能实现该private嵌套接口。当然,外部类可以实现public的嵌套接口。
    • 对于private接口中的public方法的返回值,你只能交给有权使用它的对象?
    • 当实现某个接口时,并不需要实现嵌套在其内部的任何接口。
  9. 优先使用类而不是接口。如果你的设计中需要某个接口,你必须了解它。否则,不到迫不得已,不要将其放到你的设计中。
posted @ 2017-06-17 12:01  kejicjk  阅读(124)  评论(0)    收藏  举报