• 接口 (interface)

    1. 为什么使用接口:

      1. 如下案例:
        1. 实现防盗门功能:
          8.接口

        2. 定义两个抽象类,在子类继承的时候,根据Java单继承的规定,无法实现继承两个父类。未解决这样的设计逻辑,引入了接口。

    2. java中如果有多个父类需要继承的时候,可以考虑使用接口进行实现;

      1. java中的接口具备广发的使用:
        1. 用法:
          1. 使用interface来修饰;
          2. 接口中可以包含多个方法,且方法跟抽象类中的抽象方法一致,可以不写实现,子类在实现的时候必须要实现代码逻辑;
          3. 子类实现接口使用implements关键字。
    3. 接口特性:

      1. 接口不可以被实例化,即接口中的所有方法都是抽象方法;而且接口中所有方法的访问权限都是public,默认权限也是public;
      2. 实现类必须实现接口的所有方法;
      3. 实现类可以实现多个接口;
      4. 接口中的变量都是静态常量。
    4. 描述Usb功能:
      8.接口

    5. 使用接口实现防盗门功能:
      8.接口

    6. 接口中的相关规则总结:

      1. 接口中所有方法都是抽象的;
      2. 接口没有显示的将接口中的成员用public显示,但默认是public访问权限;
      3. 接口中变量默认用public static final标识,所以接口中定义的变量就是全局静态常量;
      4. 可以定义一个接口,用extends去继承一个已有的接口;
      5. 可以定义一个类,用implements去实现一个接口中所有方法;
      6. 可以定义一个抽象类,用implements去实现一个接口中部分方法;

    抽象类和接口的区别

    1. 抽象类中的方法可以有抽象方法,也可以有普通方法,但是接口中只能包含抽象方法;
    2. 抽象类需要用abstarct关键字修饰,而接口需要用interface关键字修饰;
    3. 抽象类的子类需要用extends关键字继承抽象类,接口需要用implements来实现接口;
    4. 子类继承抽象类的时候必须要实现所有的抽象方法,普通方法可以不重写,而接口中所有的方法都必须实现;
    5. 抽象类可以定义成员变量,而接口只能定义静态常量;
    6. 抽象类在子类实现的时候是单继承,接口是多继承;
    7. 抽象类和接口都不能实例化,但是抽象类中可以有构造方法,而接口中不能有;
    8. 抽象类可以实现接口,并且不实现接口中的方法,而接口只能继承接口,不能实现接口。

    内部类——成员内部类

    1. 把一个类定义在另一个类的内部称为内部类;

    2. 一个Java文件可以包含多个class文件,但是只能有一个public class;

    3. 使用:

      1. 创建内部类的时候,需要在内部类的前面添加外部类来修饰:

        1. InnerClassDemo.InnerClass inner = new InnerClassDemo().new InnerClass()
      2. 特点:

        1. 内部类可以方便的访问外部类的私有属性;
        2. 外部类不能访问内部类的私有属性,如果在外部类创建了内部类的对象,可以通过对象访问;
        3. 内部类中不能定义静态属性;
        4. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,需要使用this关键字。(外部类.this.成员变量或者方法)
    4. 在外部类访问内部类:

      1. 语法:
        1. 外部类 外部类对象 = new 外部类();
        2. 外部类.内部类 内部类对象 = 外部类对象.new 内部类();
    5. 匿名内部类:

      1. 适合只使用一次的类,安卓中使用的多;
      2. 当定义了一个类,实现了某个接口的时候,在使用过程中只需要使用一次,没有其他用途,考虑到代码编写的简洁,可以考虑不创建具体的类,而采用new interface(){添加未实现的方法};
    6. 内部静态类:

      1. 在类的内部使用static修饰的类称为静态内部类;
      2. 语法:
        1. new 外部类类名.内部类().方法名;
        2. 外部类类名.内部类 内部类对象名 = new 外部类类名.内部类类名();
    7. 方法内部类:

      1. 方法内部类是指:将内部类定义在外部类的方法中;
      2. 注意事项:
        1. 方法内部类不能在外部类的方法以外的地方使用,所以,方法内部类不能使用访问控制符和static修饰符;
        2. 只能在方法中创建对象,因此class的作用域就是当前方法;

相关文章: