Java中的接口知识汇总

 更新时间:2016年04月21日 08:50:38   作者:泪洒星辰  
本文给大家汇总介绍了在java中的接口知识,包括为什么要使用接口、什么是接口、抽象类和接口的区别、如何定义接口以及定义接口注意点,希望大家能够喜欢

一.为什么要使用接口

 假如有一个需求:要求实现防盗门的功能。门有"开"和"关"的功能,锁有"上锁"和"开锁"的功能。

分析:首先防盗门是一个门,门有开门和关门的功能,还有一把锁,锁有开锁和上锁,按照面向对象的编程的思想,我们会将门和锁都作为一个类而单独存在,但是,不能让防盗门继承自门的同时又继承自锁,防盗门不是锁,不符合继承中is a的关系,在java中支持单继承。那么我们如何来解决这一问题,这时就要用到接口。

    二.什么是接口

    在软件中接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合,但是没有方法的实现,接口其实上也可以看做是一个特殊的抽象类,但是采用和抽象类完全不同的方法来表示,两者的设计理念也是不同的,抽象类有利于代码复用,接口利于代码的扩展和维护。

    三.抽象类和接口的区别:

01抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

02.抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

03.接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

04.一个类只能继承一个抽象类,而一个类却可以实现多个接口。

   四.如何定义接口

  首先先来看一下语法:

   [修饰符] interface 接口名 extends 父接口1,父接口2,...

   {

     //常量定义

     //方法定义

   }

   在一个类中实现接口语法:

class 类名 父类名 implements 接口1,接口2,.....

{

  //类成员

}

五.定义接口注意点

   01.接口的命名规则与类相同,如果修饰符是public ,则该接口在整个项目中可见;如果省略修饰符,则该接口只在当前包中可见。

   02.接口中可以定义常量,不能定义变量,如果你在接口中定义属性,那么通过反编译可以看见他会自动用public static final 修饰,接口中的属性都是全局静态常量,接口中的常量必须在定义时指定初始值。

    03.接口中所有的方法都是抽象方法,接口中方法都会自动用public abstract 修饰,即接口中只有全局抽象方法。

    04.接口不能实例化,接口中不能有构造。

    05接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。

    06.接口的实现类必须实现接口的全部方法,否则必须定义为抽象类。

相关文章

  • 教你如何测试Spring Data JPA的Repository

    教你如何测试Spring Data JPA的Repository

    Spring Data JPA 提供了一些便捷的方式来测试这种持久层的代码,常见的两种测试类型是集成测试和单元测试,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • mybatis注解动态sql注入map和list方式(防sql注入攻击)

    mybatis注解动态sql注入map和list方式(防sql注入攻击)

    这篇文章主要介绍了mybatis注解动态sql注入map和list方式(防sql注入攻击),具有很好的参考价值,希望对大家有所帮助。
    2021-11-11
  • Java图形界面之JFrame,JLabel,JButton详解

    Java图形界面之JFrame,JLabel,JButton详解

    这篇文章主要介绍了Java图形界面之JFrame、JLabel、JButton详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • java日期格式化YYYY-MM-dd遇坑指南小结

    java日期格式化YYYY-MM-dd遇坑指南小结

    本文主要介绍了java日期格式化YYYY-MM-dd遇坑指南小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Springmvc完成ajax功能实例详解

    Springmvc完成ajax功能实例详解

    在本篇文章里小编给大家整理了关于Springmvc完成ajax功能实例内容,有需要的朋友们可以参考学习下。
    2019-09-09
  • Java中try-catch-finally执行顺序你知道吗

    Java中try-catch-finally执行顺序你知道吗

    本文主要介绍了try-catch-finally执行顺序你知道吗,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Struts2.5版本struts.xml与web.xml配置的更改方法

    Struts2.5版本struts.xml与web.xml配置的更改方法

    这篇文章主要给大家介绍了关于Struts2.5版本中struts.xm与web.xml配置的更改方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • JHipster如何修改JDL中的entity

    JHipster如何修改JDL中的entity

    这篇文章主要介绍了JHipster如何修改JDL中的entity问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • SPRING BOOT启动命令参数及源码详析

    SPRING BOOT启动命令参数及源码详析

    这篇文章主要给大家介绍了关于SPRING BOOT启动命令参数及源码分析的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SPRING BOOT具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • mybatis如何批量修改数据

    mybatis如何批量修改数据

    这篇文章主要介绍了mybatis如何批量修改数据方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论