zoukankan      html  css  js  c++  java
  • linkin大话面向对象--接口

    • 接口(interface)的概念,掌握接口很重要,以后所有的编程都要面向接口编程。其实接口的内涵就7个字:规范和实现分离。

    抽象类是从多个类中抽象出来的模板,若要将这种抽象进行得更彻底,就得用到一种特殊的“抽象类”:接口。

    生活中听说过的USB接口其实并不是我们所看到的那些插槽,而是那些插槽所遵循的一种规范;而我们看到的那些插槽是根据USB规范设计出来的实例而已,也就说插槽是USB的实例;对应不同型号的USB设备而言,他们各自的USB插槽都需要遵循一个规范,遵守这个规范就可以保证插入插槽的设备能与主板正常通信;对于同一种型号的主板上的多个USB插槽,他们有相同的数据交换方式,相同的实现细节,可认为他们都是同一个类的不同实例。

    • 接口,类,对象示意图


    接口只定义了类应当遵循的规范,却不关心这些类的内部数据和其方法内的实现细节。

    接口只规定了这些类里必须提供的方法,从而分离了规范和实现,增强了系统的可拓展性和维护性。


    • interface定义
    接口定义一种规范,规定一个类必须做什么,但它不管如何具体去做;
    [修饰符] interface 接口名 extends 父接口1,父接口2....

    1,没有构造方法,不能实例化

    2,接口只能继承接口,不能继承类

    3,接口里没有普通方法,方法全是抽象的
    4,接口里的方法默认修饰符是public abstract
    5,接口里的字段全是全局常量,默认修饰符是public static final
    接口里的成员包括:全局常量,公共的抽象方法,内部类(包括内部类,内部接口,内部枚举类)。主要是前两个。

    接口的名字,符合标识符就OK,一般的我们习惯在接口名前加上"I"字母,用于区分类和接口,一般的,若接口叫IUSB,习惯上把它的实现类(子类)类写为MouseUSBImpl,主要是方便阅读

    • 使用接口

    格式:public class SubImpl  extends Super  implements IA,IB。实现接口(支持多实现)

    [修饰符] class 类名 implements 接口1,接口2...
    1,接口的实现必须在 extends 之后

    2,实现接口的方法必须是 public 类型

    3,接口不能创建实例,但是可以声明引用类型的变量。

    此时,引用类型的变量必须指向到其实现类对象。
    IStudent s = new String();
    IStudent s = new StudentImpl();

    • 接口和抽象类


    相同点:

    1,都位于继承的顶端,用于被其他实现或继承

    2,都不能实例化

    3,都包含抽象方法,其子类都必须覆写这些抽象方法


    区别:

    1,抽象类为部分方法提供实现,避免子类重复实现这些方法,提供代码重用性;接口只能包含抽象方法

    2,一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)


    二者的选用:
    优先选用接口,尽量少用抽象类,编程时都是面向接口编程的
    需要定义子类的行为,又要为子类提供共性功能时才选用抽象类,其实主要是模板。


  • 相关阅读:
    从有序的数组中查找某个值
    OJ 21658::Monthly Expense(二分搜索+最小化最大值)
    OJ 21651::Cow Hurdles(佛罗一德的变式)
    Oj 24260: Lilypad Pond (神奇广搜题,状态搜索)
    MongoDB常用语句
    MongoDB可视化工具之mongoBooster
    MongoDB的安装,mongod和mongo的区别
    数组遍历及其他方法
    MongoDB的安装与卸载与再安装
    MongoDB下载安装步骤+文件解析
  • 原文地址:https://www.cnblogs.com/LinkinPark/p/5233158.html
Copyright © 2011-2022 走看看