• 抽象类和接口的区别


        关于abstract class和interface这两者的区别,本人初学Java时被这个问题困扰了许久。网上搜了各种各样的答案,加上自己的理解,今天来整理一下,如有纰漏,还请高手指正!

        总的来说,抽象类是普通类的一个特例,具有普通类有的和没有的特性;而接口表示一种规范、标准,用于声明方法,存放一些不能改变的静态变量。

        下面分别从两者的语法和应用两个方面来总结:

        1.语法上的区别:

      1)构造方法:抽象类可以有,接口中不能有。

      2)成员变量:抽象类可以有普通成员变量,或静态成员变量;接口中只能有默认为(public static final)修饰的变量。

      3)方法:抽象类中可以有普通方法、静态方法,也可以有抽象方法;接口中的方法必须都是抽象方法。

      4)访问权限:抽象类中的静态成员变量的访问权限可以任意,抽象方法的访问权限除了不能为private,其他均可;接口中抽象方法的访问权限只能为public。

      5)继承与实现:一个类只能继承一个抽象类,但可以实现多个接口。

        如果不明白,可以自己分别写一个抽象类和一个接口,从以上几个方面来验证一下,加深理解。

        2.应用上的区别:

      1)抽象类在代码实现方面发挥作用,可以实现代码的重用。

      模板方法设计模式是抽象类的一个典型应用。假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,这时就可以定义一个抽象类,让所有的Servlet都继承该抽象类,在该抽象类的service方法中完成以上3个工作,而在各个子类中只是完成各自的业务逻辑代码。

      父类方法中的某段代码不确定,留给子类干,就要用到模板方法设计模式。

      2)接口在系统架构设计方面发挥作用,主要用于定义模块之间的通信契约。

    PS:听着钢琴曲,敲着心爱的代码和技术知识点,有种谱写科学艺术作品的赶脚,2333……

  • 相关阅读:
    使用Python快速生成虚拟的超大文件
    常用的 adb 命令合集
    Jmeter 性能测试之反向代理录制性能测试脚本
    论医院网络时钟系统(NTP时钟服务器)的重要性
    北斗时钟装置(卫星时间同步系统)应用自动化系统探讨
    解决前端部署到Nginx非根目录下页面出现空白的问题
    解决docker中Easyexcel因缺少字体无法导出的问题
    看图认识HTML5
    看图知Docker
    ASIS CTF Finals 2020
  • 原文地址:https://www.cnblogs.com/xz-luckydog/p/5045577.html
Copyright © 2020-2023  润新知