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

  • 相关阅读:
    42.OC中instancetype与id的区别
    41.App 框架的搭建思路以及代码的规范
    44、WebStrom下载和破解
    40、IOS自动打包-Python脚本
    39、字符串去除空格
    38、当前时间是否在开放时间内(也就是时间对比)
    37、自定义气泡
    36、NSTimer使用详解-开启、关闭、移除
    35、输入框(UITextField)密码明暗文切换
    34、iOS App图标和启动画面尺寸
  • 原文地址:https://www.cnblogs.com/xz-luckydog/p/5045577.html
Copyright © 2011-2022 走看看