• Java中的抽象类


    一、抽象类与普通类的区别

    1.抽象类不能被实例化

    2.抽象类可以有构造函数

    3.抽象方法只需申明,无需实现,但抽象类中可以存在抽象方法

    4.抽象方法不能被private修饰

    5.含有抽象方法的类必须被声明为抽象类

    6.抽象类的子类必须实现抽象类中所有抽象方法,否则这个子类也必须是抽象类

    7.抽象类不能被final修饰

    二、抽象类与接口的区别

    1.抽象类可以有默认的方法实现,而接口完全抽象,无方法实现

    2.抽象类可以有构造器,接口不能

    3.抽象方法可以被default、protected、public修饰,接口只能被public修饰

    4.抽象类中可以存在main方法

    5.抽象类比接口快

    6.a. 抽象类是对一种事务的抽象,是对整个类进行抽象,包括属性,行为(方法)。接口是对行为(行为)的抽象。如果一个类继承或实现了某个抽象类,那么一定是抽象类的种类(拥有同一种属性或行为的类)。

     b. 设计层面不同,抽象类作为很多子类的父类,是一种模板设计,而接口是一种规范,它是一种辐射式设计,也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象方法中添加实现,子类可以不用变更,而对于接口不行,如果接口进行了变更,那么实现它的类都需要做变更。

    三、什么情况下使用接口?什么情况下使用抽象类?

    1.使用抽象类是为了代码的复用,而使用接口的动机是为了实现多态性。

    2.当2个或多个类中有重复部分的时候,我们可以抽象出来一个基类,如果希望这个基类不能被实例化,就可以把这个基类设计成抽象类。

    3.当仅仅描述一组方法或规则时使用接口

    参考资料:https://www.cnblogs.com/zhangpengnike/p/5798145.html

  • 相关阅读:
    nohup
    wonder vscode plugins
    myhome vscode plugins
    virtural machine eth1
    单片机电子时钟的设计(期末课程设计)
    解决Eclipse中更改HTML页面后,浏览器查看页面无变化
    ASP.NET 中的 Session对象
    windows下mysql数据库导入导出
    TP5.1分表,partition分表实例,根据自增主键水平分表
    PHP操作mysql数据库分表的方法
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/11051259.html
Copyright © 2020-2023  润新知