zoukankan      html  css  js  c++  java
  • 抽象类和接口的区别

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

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

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

        1.语法上的区别:

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

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

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

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

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

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

        2.应用上的区别:

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

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

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

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

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

  • 相关阅读:
    centos 安装 redis3.2.0 集群
    CentOS7安装配置redis-3.0.0
    CentOS7/RHEL7安装Redis步骤详解
    鸟哥之安裝 CentOS7.x
    Centos 7 学习之静态IP设置
    CentOS7 下linux不能上网解决方法​,centos7 eth0 没有ip,IP突然丢失
    javamail发送邮件(转)
    Apache James使用的方法及相关心得(转)
    Velocity缓存与穿透(转)
    十分钟搞懂什么是CGI(转)
  • 原文地址:https://www.cnblogs.com/xz-luckydog/p/5045577.html
Copyright © 2011-2022 走看看