• 抽象类和接口的区别


    1、什么是抽象类

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

    2、为什么使用抽象类

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

    3、抽象类和接口的区别

    一张图就可以说清楚:

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

    • 如果你拥有一些方法并且想让它们中的一些有默认实现,那么使用抽象类吧。
    • 如果你想实现多重继承,那么你必须使用接口。由于Java不支持多继承,子类不能够继承多个类,但可以实现多个接口。因此你就可以使用接口来解决它。
    • 如果基本功能在不断改变,那么就需要使用抽象类。如果不断改变基本功能并且使用接口,那么就需要改变所有实现了该接口的类。
    • 假如有一个接口,五个实现类,现在的需求可能要往接口加一个方法,这样就要改动五个实现类,但需求只需要改动其中两个实现类,可以再定义一个抽象类去实现这个接口,在抽象类中新增这个方法,然后其他两个实现类实现这个抽象类就好了,或者使用 Java 8 中的新特性,在接口中新增默认方法或者静态方法。
    越努力越幸运,一起加油吧!
  • 相关阅读:
    selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
    ERROR: virtualenvwrapper could not find virtualenv in your path
    VM中的Centos 7配置静态IP
    CentOS7 安装JumpServer
    ERROR 1130 (HY000): Host 'test177' is not allowed to connect to this MySQL server
    获取到一张表中指定字段重复的数量
    Windows7设置局域网文件共享
    vmware虚拟机安装Windows 7后虚拟机自动挂起
    关于PHP版本比较函数version_compare的问题
    关于数据表中一对多、多对一关系的设计
  • 原文地址:https://www.cnblogs.com/afei1013/p/14420328.html
Copyright © 2020-2023  润新知