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……

  • 相关阅读:
    递归函数 二分查找
    内置函数
    迭代器 生成器 推导式
    装饰器函数的有用信息
    函数名 闭包 装饰器
    动态参数 命名空间
    C#_LINQ(LINQ to Entities)
    C#_MVC 自定义AuthorizeAttribute实现权限管理
    C#_MVC3之使用Authorize简单的验证登录(一)
    C#_MVC_分页update
  • 原文地址:https://www.cnblogs.com/xz-luckydog/p/5045577.html
Copyright © 2011-2022 走看看