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

    1、什么是抽象类

    众所周知,在Java面向对象的概念中,所有的对象的描述都是通过类来实现的,但是并不是所有类都是用来描述对象的,这比如说抽象类,在我的理解中,抽象类就类似一个模板,并没有将一个对象描述的很清楚,因为它并没有足够的信息去描述一个具体的对象,这就是所谓的抽象类。抽象类其实和普通的类基本一样,除了抽象类不能实例化之外,普通类有的功能它都有,成员变量、成员方法和构造方法的访问方式和普通类一样,抽象类作为一个模板,是继承它的子类的父类,它提取了子类的通用的方法,供子类使用,很好的实现了代码的复用。

    2、为什么使用抽象类

    其实一开始我也是不理解的,为什么要引入抽象类,就使用普通类难道不行吗?答案是只使用普通类是可以的,子类去继承一个普通类也是可以的,子类完全可以覆盖父类的方法,似乎抽象类完全没有必要。但是仔细想想,其实父类的有些方法,完全没有必要详细的去写怎么实现这个方法的,因为子类实现这个方法可能各有不同,父类具体去写这个方法就很没必要了,这就体现出抽象类的重要性了。这样别人看到你的代码,或你看到别人的代码,你就会注意抽象方法,而知道这个方法是在子类中实现的,所以,有个提示作用。

    3、抽象类和接口的区别

    一张图就可以说清楚:

     4、什么时候使用抽象类和接口

    • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
    • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
    • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
    • 假如有一个接口,五个实现类,现在的需求可能要往接口加一个方法,这样就要改动五个实现类,但需求只需要改动其中两个实现类,可以再定义一个抽象类去实现这个接口,在抽象类中新增这个方法,然后其他两个实现类实现这个抽象类就好了,或者使用 Java 8 中的新特性,在接口中新增默认方法或者静态方法。
    越努力越幸运,一起加油吧!
  • 相关阅读:
    eclipse code templates 设置(eclipse注释模版配置)
    kettle 程序调用执行ktr转换示例代码
    JQuery学习笔记
    获取工程路径(jar和普通文件结构通用) java
    java 获取jar包路径,遍历jar包
    百度跨域ajax
    eclipse Wtp在线安装
    PropertiesHelper
    java base64/jQuery Base64
    Eclipse中,打开文件所在文件夹的插件,及设置
  • 原文地址:https://www.cnblogs.com/afei1013/p/14420328.html
Copyright © 2011-2022 走看看