zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Golang 之 casbin(权限管理)
    Golang validate验证器
    商城实战课程
    webstorm上的Element提示插件
    实战高并发大流量秒杀系统
    lettcode 739: 每日温度
    时钟同步 chrony
    linux 文件目录权限命令
    Nginx 四层负载均衡
    Nginx 版本回滚
  • 原文地址:https://www.cnblogs.com/jxxblogs/p/11051259.html
Copyright © 2011-2022 走看看