zoukankan      html  css  js  c++  java
  • 接口

    定义

    Java中的接口就是功能的封装, 用来扩展类的功能。接口也可以理解为一组操作规范,或者是一个协议。

    [修饰符] interface 接口名 {

    ​ 功能(接口中的方法默认使用public abstract修饰)

    }


    实现

    • 接口中方法默认使用public abstract修饰, 一般情况下接口中只有抽象方法。


      接口中还可以定义public static final常量 , public static 方法, public default方法。


      public interface MyInterface {
          void m1();	//接口中方法默认使用public abstract修饰, 一般情况下接口中只有抽象方法。
          
          int n = 88;	//接口中字段默认使用public static final修饰
          
          public static void func1() {	//接口中可以定义静态方法,通过接口名调用
              //方法体
          }	
          
          public default void func2() {	//接口中方法如果使用default修饰,在接口中可以有磨人的方法体,实现类可以重写该方法,也可以不重写
              //方法体
          }
          
      }
      

    • 类实现了接口,需要重写接口的抽象方法, 如果没有重写接口中所有的抽象方法,实现类需要定义为抽象类。


    • 接口是一种引用数据类型, 可以定义变量, 但是接口不能实例化对象, 接口引用需要赋值实现类对象, 或者接口的匿名内部类对象。


    • 接口多态, 接口引用调用接口中抽象方法,实际上执行的是实现类对象的方法。接口存在就是为实现多态的。


    • 一个类可以同时实现多个接口, 需要重写所有接口的所有抽象方法。


    • 接口也支持继承,并且接口支持多继承


    • 接口的引用可以被匿名内部类对象赋值


    • 方法的形参是接口,在调用的时候可以传递匿名内部类对象。




    口与抽象类的异同点


    相同:
    1. 都可以定义抽象方法
    2. 都不能实例化对象
    3. 定义的抽象方法都需要被重写
    4. 都可以定义public static 方法,public static final 常量

    不同:
    1. 意义不同
      • 抽象类是对实物更高级的抽象
      • 接口是对功能的封装
    2. 定义方式不同
      • 抽象类用abstract
      • 接口用interface
    3. 内容不同
      • 抽象类中除了抽象方法外,还可以定义构造方法等普通类中定义的所有成员。
      • 接口中只能定义:
        1. 抽象方法
        2. public static 方法
        3. public default方法
        4. final 常量
    4. 使用方式不同
      • 抽象类需要被子类继承(extends)
      • 接口需要被实现类实现(implements)
    5. 类只支持单继承,接口支持多继承
    6. 应用场景不同
      • 一般情况下, 对类进行功能的扩展,优先选择接口
      • 除了扩展功能外, 还需要保存不同的数据,只能选择抽象类; 抽象类还可以约束所有的子类都具有相同的功能(子类必须重写抽象类的方法)


    接口的应用


    1. 使用接口来封装功能(操作)

    2. 接口可以定义一组操作规范

      如开发某个项目时, 在相似模块中有一些操作是相同的, 可以把这一组相同的操作封装在一个接口中,就相当于通过接口定义了一个操作规范



    提倡面向接口编程

    1. 接口使用比较灵活,一个类在继承父类的同时,可以实现多个接口


    2. 接口比较容易拓展,接口引用可以赋值各种实现类的对象,经常把接口引用作为方法形参,在调用方法时,可以传递各种实现类对象


    3. 接口可以使项目分层

    分析项目不分层的弊端






  • 相关阅读:
    spring_three
    报错:java.sql.SQLException: The server
    Spring_two
    Spring_One
    Mybatis中的collection和association一关系
    Mybatis_three
    文件操作1
    面向对象编程三大特征7
    面向对象编程三大特征6
    面向对象编程三大特征5
  • 原文地址:https://www.cnblogs.com/huochemeiyouhuo/p/12269231.html
Copyright © 2011-2022 走看看